;;==========================================================================
;; Copyright (c) 2000-2008,  Elastos, Inc.  All Rights Reserved.
;;==========================================================================

    INCLUDE kxarm.h

;define macro
    MACRO
    DEBUGBREAK
    DCD       0xE6000014  ; DCD Undefined Instruction, cause a DebugBreak
    MEND

    MACRO
    debug $reg
    stmdb sp!,{$reg}
    bl debugx
    MEND

    AREA |.data|,ALIGN=2,DATA

    TEXTAREA
;----------------------------------------------------
    IMPENTRY  __dftest
    MOV pc,lr
;----------------------------------------------------
    IMPENTRY __subd
    stmdb     sp!, {r4 - r9, r11, lr}  ; stmfd
    sub       sp, sp, #0x24  ; 0x24 = 36
    mov       r5, #2, 12  ; 0x200000 = 2097152
    str       r3, [sp, #0x20]  ; 0x20 = 32
    str       r2, [sp, #0x1C]  ; 0x1C = 28
    str       r1, [sp, #0x18]  ; 0x18 = 24
    str       r0, [sp, #0x14]  ; 0x14 = 20
    eor       r3, r3, #2, 2  ; 0x80000000 = 2147483648
    b         pp1       ;  pc+8+24
    IMPENTRY __addd
    stmdb     sp!, {r4 - r9, r11, lr}  ; stmfd
    sub       sp, sp, #0x24  ; 0x24 = 36
    mov       r5, #0
    str       r3, [sp, #0x20]  ; 0x20 = 32
    str       r2, [sp, #0x1C]  ; 0x1C = 28
    str       r1, [sp, #0x18]  ; 0x18 = 24
    str       r0, [sp, #0x14]  ; 0x14 = 20
pp1
    str       r5, [sp, #0x10]  ; 0x10 = 16
    mov       r4, r1, lsl #1
    mov       r4, r4, lsr #21
    add       r4, r4, #1
    cmp       r4, #2, 22  ; 0x800 = 2048
    beq       pp2       ;  pc+8+292
    mov       r4, r3, lsl #1
    mov       r4, r4, lsr #21
    add       r4, r4, #1
    cmp       r4, #2, 22  ; 0x800 = 2048
    beq       pp3       ;  pc+8+404
    movs      r12, r3, lsl #1
    teqeq     r2, #0
    mov       r8, r12, lsl #10
    mov       r3, r12, lsr #20
    mov       r4, r2, lsl #11
    orr       r5, r8, r2, lsr #21
    addne     r3, r3, #0x1E, 22  ; 0x7800 = 30720
    mov       r3, r3, rrx
    orrne     r5, r5, #2, 2  ; 0x80000000 = 2147483648
    movs      r12, r12, asr #21
    addeq     lr, pc, #8
    beq       __fp_norm_op2  ; 100458D4
    cmn       r12, #1
    beq       pp4       ;  pc+8+144
    movs      r12, r1, lsl #1
    teqeq     r0, #0
    mov       r8, r12, lsl #10
    mov       r1, r12, lsr #20
    mov       r2, r0, lsl #11
    orr       r0, r8, r0, lsr #21
    addne     r1, r1, #0x1E, 22  ; 0x7800 = 30720
    mov       r1, r1, rrx
    orrne     r0, r0, #2, 2  ; 0x80000000 = 2147483648
    movs      r12, r12, asr #21
    addeq     lr, pc, #8
    beq       __fp_norm_op1  ; 10045814
    cmn       r12, #1
    beq       pp5       ;  pc+8+144
    bl        __fp_addsub_common  ; 10045590
    bl        __fp_e2d  ; 1004634C
pp11
    tst       r3, #0x1F  ; 0x1F = 31
    addeq     sp, sp, #0x24  ; 0x24 = 36
    ldmeqia   sp!, {r4 - r9, r11, lr}  ; ldmeqfd
    moveq     pc, lr
    ldr       r12, [sp, #0x10]  ; 0x10 = 16
    str       r0, [sp, #8]
    str       r1, [sp, #0xC]  ; 0xC = 12
    ldr       r0, [sp, #0x1C]  ; 0x1C = 28
    ldr       r1, [sp, #0x20]  ; 0x20 = 32
    str       r0, [sp]
    str       r1, [sp, #4]
    ldr       r2, [sp, #0x14]  ; 0x14 = 20
    orr       r1, r3, r12
    ldr       r3, [sp, #0x18]  ; 0x18 = 24
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    ldr       r1, [sp, #0x14]  ; 0x14 = 20
    add       sp, sp, #0x24  ; 0x24 = 36
    ldmia     sp!, {r4 - r9, r11, lr}  ; ldmfd
    mov       pc, lr
pp4
    orr       r3, r3, #1, 2  ; 0x40000000 = 1073741824
    movs      r12, r1, lsl #1
    teqeq     r0, #0
    mov       r8, r12, lsl #10
    mov       r1, r12, lsr #20
    mov       r2, r0, lsl #11
    orr       r0, r8, r0, lsr #21
    addne     r1, r1, #0x1E, 22  ; 0x7800 = 30720
    mov       r1, r1, rrx
    orrne     r0, r0, #2, 2  ; 0x80000000 = 2147483648
    movs      r12, r12, asr #21
    addeq     lr, pc, #8
    beq       __fp_norm_op1  ; 10045814
    cmn       r12, #1
pp5
    orreq     r1, r1, #1, 2  ; 0x40000000 = 1073741824
    sub       lr, pc, #0x9C  ; 0x9C = 156
    mov       r11, #2
    b         __fp_addsub_uncommon  ; 10045710
pp2
    orrs      r4, r0, r1, lsl #12
    beq       pp6       ;  pc+8+48
    tst       r1, #2, 14  ; 0x80000 = 524288
    orreq     r5, r5, #1
    beq       pp7       ;  pc+8+132
    mov       r4, r3, lsl #1
    mov       r4, r4, lsr #21
    add       r4, r4, #1
    cmp       r4, #2, 22  ; 0x800 = 2048
    bne       pp7       ;  pc+8+112
    orrs      r4, r2, r3, lsl #12
    beq       pp7       ;  pc+8+104
    tst       r3, #2, 14  ; 0x80000 = 524288
    orreq     r5, r5, #1
    b         pp7       ;  pc+8+92
pp6
    movs      r4, r3, lsl #1
    mov       r4, r4, lsr #21
    add       r4, r4, #1
    cmp       r4, #2, 22  ; 0x800 = 2048
    movne     r3, r5
    bne       pp11      ;  pc+8-244
    orrs      r4, r2, r3, lsl #12
    beq       pp12      ;  pc+8+16
    mov       r1, r3
    mov       r0, r2
    tst       r3, #2, 14  ; 0x80000 = 524288
    orreq     r5, r5, #1
    b         pp7       ;  pc+8+40
pp12
    eors      r4, r1, r3
    movpl     r3, r5
    bpl       pp11      ;  pc+8-284
    orr       r5, r5, #1
    b         pp7       ;  pc+8+20
pp3
    mov       r1, r3
    mov       r0, r2
    orrs      r4, r2, r3, lsl #12
    beq       pp11      ;  pc+8-308
    tst       r3, #2, 14  ; 0x80000 = 524288
    orreq     r5, r5, #1
pp7
    orr       r1, r1, #0x7F, 8  ; 0x7F000000 = 2130706432
    orr       r1, r1, #0x3E, 14  ; 0xF80000 = 16252928
    mov       r3, r5
    b         pp11      ;  pc+8-332
    IMPENTRY __subs
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    str       r1, [sp, #0x14]  ; 0x14 = 20
    mov       lr, #3, 12  ; 0x300000 = 3145728
    str       r0, [sp, #0x10]  ; 0x10 = 16
    b         pp18      ;  pc+8+308
    IMPENTRY __adds
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    str       r1, [sp, #0x14]  ; 0x14 = 20
    mov       lr, #1, 12  ; 0x100000 = 1048576
    str       r0, [sp, #0x10]  ; 0x10 = 16
    b         pp19      ;  pc+8+4
pp29
    eor       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    b         pp20      ;  pc+8+4
pp19
    teq       r0, r1
    bmi       pp21      ;  pc+8+260
pp20
    subs      r12, r0, r1
    subcc     r0, r0, r12
    addcc     r1, r1, r12
    mov       r2, r0, lsr #23
    sub       r3, r2, r1, lsr #23
    mov       r12, #0xFF, 8  ; 0xFF000000 = 4278190080
    tst       r12, r1, lsl #1
    teqne     r12, r2, lsl #24
    beq       pp22      ;  pc+8+168
    mov       r12, #2, 2  ; 0x80000000 = 2147483648
    orr       r0, r12, r0, lsl #8
    orr       r1, r12, r1, lsl #8
pp27
    cmp       r3, #0x18  ; 0x18 = 24
    orrge     lr, lr, #0x10  ; 0x10 = 16
    bge       pp23      ;  pc+8+8
    rsb       r12, r3, #0x18  ; 0x18 = 24
    movs      r12, r1, lsl r12
    orrne     lr, lr, #0x10  ; 0x10 = 16
pp23
    adds      r0, r0, r1, lsr r3
    bcs       pp24      ;  pc+8+68
    sub       r2, r2, #1
    movs      r0, r0, lsr #8
    adc       r0, r0, r2, lsl #23
    bcc       __fArithReturn  ; 10035E10
    rsb       r3, r3, #0x19  ; 0x19 = 25
    movs      r1, r1, lsl r3
    mov       r12, r0, lsl #1
    cmnne     r12, #1, 8  ; 0x1000000 = 16777216
    bcc       __fArithReturn  ; 10035E10
    biceq     r0, r0, #1
    cmn       r12, #1, 8  ; 0x1000000 = 16777216
    bcc       __fArithReturn  ; 10035E10
pp25
    orr       lr, lr, #0x14  ; 0x14 = 20
    movs      r0, r0
    mov       r1, #0xFF  ; 0xFF = 255
    mov       r0, r1, lsl #23
    orrmi     r0, r0, #2, 2  ; 0x80000000 = 2147483648
    b         __fArithReturn  ; 10035E10
pp24
    mov       r0, r0, rrx
    movs      r12, r0, ror #8
    orrmi     lr, lr, #0x10  ; 0x10 = 16
    movs      r0, r0, lsr #8
    adc       r0, r0, r2, lsl #23
    mov       r12, r0, lsl #1
    cmncc     r12, #1, 8  ; 0x1000000 = 16777216
    bcc       __fArithReturn  ; 10035E10
    cmn       r12, #1, 8  ; 0x1000000 = 16777216
    bcs       pp25      ;  pc+8-68
    rsb       r3, r3, #0x18  ; 0x18 = 24
    movs      r1, r1, lsl r3
    biceq     r0, r0, #1
    b         __fArithReturn  ; 10035E10
pp22
    teq       r12, r2, lsl #24
    beq       pp26      ;  pc+8+32
    movs      r12, r1, lsl #1
    beq       __fArithReturn  ; 10035E10
    mov       r0, r0, lsl #8
    mov       r1, r1, lsl #8
    tst       r2, #0xFF  ; 0xFF = 255
    orrne     r0, r0, #2, 2  ; 0x80000000 = 2147483648
    subne     r3, r3, #1
    addeq     r2, r2, #1
    b         pp27      ;  pc+8-208
pp26
    movs      r12, r0, lsl #9
    beq       __fArithReturn  ; 10035E10
    b         __fArithNaNCheck  ; 10035E60
pp21
    eor       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    b         pp28      ;  pc+8+4
pp18
    teq       r0, r1
    bmi       pp29      ;  pc+8-300
pp28
    subs      r12, r0, r1
    eorcc     r12, r12, #2, 2  ; 0x80000000 = 2147483648
    subcc     r0, r0, r12
    addcc     r1, r1, r12
    mov       r2, r0, lsr #23
    sub       r3, r2, r1, lsr #23
    mov       r12, #0xFF, 8  ; 0xFF000000 = 4278190080
    tst       r12, r1, lsl #1
    teqne     r12, r2, lsl #24
    beq       pp30      ;  pc+8+288
    orr       r0, r12, r0, lsl #1
    bic       r0, r0, #0xFE, 8  ; 0xFE000000 = 4261412864
    orr       r1, r12, r1, lsl #1
    cmp       r3, #0x20  ; 0x20 = 32
    orrge     lr, lr, #0x10  ; 0x10 = 16
    bge       pp31      ;  pc+8+12
    rsb       r12, r3, #0x20  ; 0x20 = 32
    movs      r12, r1, lsl r12
    orrne     lr, lr, #0x10  ; 0x10 = 16
    rsb       r1, r1, #0xFE, 8  ; 0xFE000000 = 4261412864
pp31
    add       r0, r0, r1, asr r3
    movs      r12, r0, lsl #8
    bcs       pp32      ;  pc+8+44
    bpl       pp33      ;  pc+8+80
    tst       r2, #0xFE  ; 0xFE = 254
    beq       pp33      ;  pc+8+72
    mov       r0, r12, asr #8
    rsbs      r3, r3, #0x21  ; 0x21 = 33
    movls     r3, #1
    movs      r1, r1, lsl r3
    adc       r0, r0, r2, lsl #23
    bcc       __fArithReturn  ; 10035E10
    bne       __fArithReturn  ; 10035E10
    biceq     r0, r0, #1
    b         __fArithReturn  ; 10035E10
pp32
    movs      r0, r12, lsl #23
    orrne     lr, lr, #0x10  ; 0x10 = 16
    movs      r0, r12, lsr #9
    adc       r0, r0, r2, lsl #23
    bcc       __fArithReturn  ; 10035E10
    rsbs      r3, r3, #0x20  ; 0x20 = 32
    movcss    r1, r1, lsl r3
    bne       __fArithReturn  ; 10035E10
    biceq     r0, r0, #1
    b         __fArithReturn  ; 10035E10
pp33
    mov       r3, r2, lsr #8
    tst       r0, #0xFF, 16  ; 0xFF0000 = 16711680
    bne       pp35      ;  pc+8+20
    movs      r0, r0, lsl #8
    beq       __fArithReturn  ; 10035E10
    sub       r2, r2, #8
    tst       r0, #0xFF, 16  ; 0xFF0000 = 16711680
    moveq     r0, r0, lsl #8
    subeq     r2, r2, #8
pp35
    tst       r0, #0xF, 12  ; 0xF00000 = 15728640
    moveq     r0, r0, lsl #4
    subeq     r2, r2, #4
    tst       r0, #3, 10  ; 0xC00000 = 12582912
    moveq     r0, r0, lsl #2
    subeq     r2, r2, #2
    cmp       r0, #2, 10  ; 0x800000 = 8388608
    movcc     r0, r0, lsl #1
    sbc       r2, r2, #2
    teq       r3, r2, lsr #8
    addeq     r0, r0, r2, lsl #23
    beq       __fArithReturn  ; 10035E10
    rsb       r2, r2, #0
    IMPENTRY __flt_underflow
    tst       r2, #0xE0  ; 0xE0 = 224
    orrne     lr, lr, #0x10  ; 0x10 = 16
    mov       r3, r3, lsl #31
    orrs      r3, r3, r0, lsr r2
    bcs       pp36      ;  pc+8+16
    rsb       r2, r2, #0x20  ; 0x20 = 32
    movs      r0, r0, lsl r2
    orrne     lr, lr, #0x10  ; 0x10 = 16
    mov       r0, r3
    b         __fArithReturn  ; 10035E10
pp36
    orr       lr, lr, #0x10  ; 0x10 = 16
    rsb       r2, r2, #0x21  ; 0x21 = 33
    movs      r2, r0, lsl r2
    adc       r0, r3, #0
    biceq     r0, r0, #1
    b         __fArithReturn  ; 10035E10
pp30
    teq       r12, r2, lsl #24
    beq       pp37      ;  pc+8+64
    movs      r12, r0, lsl #1
    moveq     r0, #0
    movs      r1, r1, lsl #1
    beq       __fArithReturn  ; 10035E10
    tst       r2, #0xFF  ; 0xFF = 255
    bic       r0, r12, #0xFF, 8  ; 0xFF000000 = 4278190080
    orrne     r0, r0, #1, 8  ; 0x1000000 = 16777216
    subne     r3, r3, #1
    addeq     r2, r2, #1
    cmp       r3, #0x1F  ; 0x1F = 31
    orrge     lr, lr, #0x10  ; 0x10 = 16
    bge       pp31      ;  pc+8-312
    rsb       r12, r3, #0x1F  ; 0x1F = 31
    movs      r12, r1, lsl r12
    orrne     lr, lr, #0x10  ; 0x10 = 16
    rsb       r1, r1, #0
    b         pp31      ;  pc+8-332
pp37
    movs      r12, r0, lsl #9
    bne       __fArithNaNCheck  ; 10035E60
    cmp       r0, r1
    orreq     lr, lr, #1
    orreq     r0, r0, #1, 10  ; 0x400000 = 4194304
    b         __fArithReturn  ; 10035E10
    IMPENTRY __fArithReturn
    tst       lr, #0x1F  ; 0x1F = 31
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    mov       r12, #0xFF, 8  ; 0xFF000000 = 4278190080
    tst       r0, r12, lsr #1
    bne       pp40      ;  pc+8+4
    tst       lr, #0x10  ; 0x10 = 16
    orrne     lr, lr, #8
pp40
    str       r0, [sp, #8]
    ldr       r0, [sp, #0x14]  ; 0x14 = 20
    str       r0, [sp]
    ldr       r2, [sp, #0x10]  ; 0x10 = 16
    mov       r1, lr
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __fArithNaNCheck
    mov       r3, #1, 8  ; 0x1000000 = 16777216
    cmn       r3, r0, lsl #1
    bls       pp41      ;  pc+8+20
    tst       r0, #1, 10  ; 0x400000 = 4194304
    orreq     r0, r0, #1, 10  ; 0x400000 = 4194304
    orreq     lr, lr, #1
    beq       __fArithReturn  ; 10035E10
    cmn       r3, r1, lsl #1
    bls       __fArithReturn  ; 10035E10
pp41
    mov       r0, r1
    tst       r0, #1, 10  ; 0x400000 = 4194304
    orreq     r0, r0, #1, 10  ; 0x400000 = 4194304
    orreq     lr, lr, #1
    b         __fArithReturn  ; 10035E10
    IMPENTRY __cmpd
    stmdb     sp!, {r4 - r7, lr}  ; stmfd
    mov       r4, r0
    mov       r5, r1
    mov       r6, r2
    mov       r7, r3
    bl        __eqd  ; 10036B4C
    movs      r3, r0
    movne     r0, #0
    bne       pp42      ;  pc+8+28
    mov       r0, r4
    mov       r1, r5
    mov       r2, r6
    mov       r3, r7
    bl        __ltd  ; 10037808
    movs      r3, r0
    mvn       r0, #0
    moveq     r0, #1
pp42
    ldmia     sp!, {r4 - r7, lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __cmps
    stmdb     sp!, {r4, r5, lr}  ; stmfd
    mov       r4, r0
    mov       r5, r1
    bl        __eqs  ; 10036CC4
    movs      r3, r0
    movne     r0, #0
    bne       pp43      ;  pc+8+20
    mov       r0, r4
    mov       r1, r5
    bl        __lts  ; 10037928
    movs      r3, r0
    mvn       r0, #0
    moveq     r0, #1
pp43
    ldmia     sp!, {r4, r5, lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __divd
    stmdb     sp!, {r4 - r9, r11, lr}  ; stmfd
    sub       sp, sp, #0x20  ; 0x20 = 32
    str       r3, [sp, #0x1C]  ; 0x1C = 28
    str       r2, [sp, #0x18]  ; 0x18 = 24
    str       r1, [sp, #0x14]  ; 0x14 = 20
    str       r0, [sp, #0x10]  ; 0x10 = 16
    mov       r5, #0
    orrs      r4, r0, r1, lsl #1
    beq       pp44      ;  pc+8+432
    mov       r4, r1, lsl #1
    mov       r4, r4, lsr #21
    add       r4, r4, #1
    cmp       r4, #2, 22  ; 0x800 = 2048
    beq       pp45      ;  pc+8+472
    orrs      r4, r2, r3, lsl #1
    beq       pp46      ;  pc+8+620
    mov       r4, r3, lsl #1
    mov       r4, r4, lsr #21
    add       r4, r4, #1
    cmp       r4, #2, 22  ; 0x800 = 2048
    beq       pp47      ;  pc+8+556
    movs      r12, r3, lsl #1
    teqeq     r2, #0
    beq       pp48      ;  pc+8+288
    mov       r8, r12, lsl #10
    mov       r3, r12, lsr #20
    mov       r4, r2, lsl #11
    orr       r5, r8, r2, lsr #21
    addne     r3, r3, #0x1E, 22  ; 0x7800 = 30720
    mov       r3, r3, rrx
    orrne     r5, r5, #2, 2  ; 0x80000000 = 2147483648
    movs      r12, r12, asr #21
    addeq     lr, pc, #8
    beq       __fp_norm_op2  ; 100458D4
    cmn       r12, #1
    beq       pp49      ;  pc+8+148
    movs      r12, r1, lsl #1
    teqeq     r0, #0
    beq       pp50      ;  pc+8+296
    mov       r8, r12, lsl #10
    mov       r1, r12, lsr #20
    mov       r2, r0, lsl #11
    orr       r0, r8, r0, lsr #21
    addne     r1, r1, #0x1E, 22  ; 0x7800 = 30720
    mov       r1, r1, rrx
    orrne     r0, r0, #2, 2  ; 0x80000000 = 2147483648
    movs      r12, r12, asr #21
    addeq     lr, pc, #8
    beq       __fp_norm_op1  ; 10045814
    cmn       r12, #1
    beq       pp51      ;  pc+8+148
    mov       r11, #2
    bl        __fp_div_common  ; 1004660C
    bl        __fp_e2d  ; 1004634C
pp71
    tst       r3, #0x1F  ; 0x1F = 31
    addeq     sp, sp, #0x20  ; 0x20 = 32
    ldmeqia   sp!, {r4 - r9, r11, lr}  ; ldmeqfd
    moveq     pc, lr
    str       r0, [sp, #8]
    str       r1, [sp, #0xC]  ; 0xC = 12
    ldr       r0, [sp, #0x18]  ; 0x18 = 24
    ldr       r1, [sp, #0x1C]  ; 0x1C = 28
    str       r0, [sp]
    str       r1, [sp, #4]
    ldr       r2, [sp, #0x10]  ; 0x10 = 16
    orr       r1, r3, #6, 12  ; 0x600000 = 6291456
    ldr       r3, [sp, #0x14]  ; 0x14 = 20
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    ldr       r1, [sp, #0x14]  ; 0x14 = 20
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {r4 - r9, r11, lr}  ; ldmfd
    mov       pc, lr
pp49
    orr       r3, r3, #1, 2  ; 0x40000000 = 1073741824
    movs      r12, r1, lsl #1
    teqeq     r0, #0
    beq       pp52      ;  pc+8+56
    mov       r8, r12, lsl #10
    mov       r1, r12, lsr #20
    mov       r2, r0, lsl #11
    orr       r0, r8, r0, lsr #21
    addne     r1, r1, #0x1E, 22  ; 0x7800 = 30720
    mov       r1, r1, rrx
    orrne     r0, r0, #2, 2  ; 0x80000000 = 2147483648
    movs      r12, r12, asr #21
    addeq     lr, pc, #8
    beq       __fp_norm_op1  ; 10045814
    cmn       r12, #1
pp51
    orreq     r1, r1, #1, 2  ; 0x40000000 = 1073741824
    sub       lr, pc, #0x9C  ; 0x9C = 156
    mov       r11, #2
    b         __fp_rdv_uncommon  ; 10046AD4
pp52
    orrs      r12, r4, r5, lsl #1
    beq       pp50      ;  pc+8+72
    movs      r5, r5, lsl #1
    bpl       pp54      ;  pc+8+44
pp48
    movs      r12, r1, lsl #1
    teqeq     r0, #0
    beq       pp54      ;  pc+8+32
    mvns      r12, r12, asr #20
    ldmeqia   sp!, {r4 - r9, r11, lr}  ; ldmeqfd
    moveq     pc, lr
    teq       r12, #1
    bne       pp56      ;  pc+8+20
    orrs      r12, r0, r1, lsl #12
    eoreq     r1, r1, r3
    ldmeqia   sp!, {r4 - r9, r11, lr}  ; ldmeqfd
    moveq     pc, lr
pp54
    mov       r3, #1
    b         __fp_nonveneer_error  ; 10046C14
pp56
    mov       r3, #2
    eor       r1, r1, r3
    b         __fp_nonveneer_error  ; 10046C14
pp50
    eor       r1, r1, r3
    and       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    ldmia     sp!, {r4 - r9, r11, lr}  ; ldmfd
    mov       pc, lr
pp44
    orrs      r4, r2, r3, lsl #1
    orreq     r5, r5, #1
    beq       pp57      ;  pc+8+184
    mov       r4, r3, lsl #1
    mov       r4, r4, lsr #21
    add       r4, r4, #1
    cmp       r4, #2, 22  ; 0x800 = 2048
    bne       pp58      ;  pc+8+212
    orrs      r4, r2, r3, lsl #12
    beq       pp58      ;  pc+8+204
    tst       r3, #2, 14  ; 0x80000 = 524288
    orreq     r5, r5, #1
    mov       r0, r2
    mov       r1, r3
    b         pp57      ;  pc+8+136
pp45
    orrs      r4, r0, r1, lsl #12
    beq       pp61      ;  pc+8+48
    tst       r1, #2, 14  ; 0x80000 = 524288
    orreq     r5, r5, #1
    beq       pp57      ;  pc+8+116
    mov       r4, r3, lsl #1
    mov       r4, r4, lsr #21
    add       r4, r4, #1
    cmp       r4, #2, 22  ; 0x800 = 2048
    bne       pp57      ;  pc+8+96
    orrs      r4, r2, r3, lsl #12
    beq       pp57      ;  pc+8+88
    tst       r3, #2, 14  ; 0x80000 = 524288
    orreq     r5, r5, #1
    b         pp57      ;  pc+8+76
pp61
    mov       r4, r3, lsl #1
    mov       r4, r4, lsr #21
    add       r4, r4, #1
    cmp       r4, #2, 22  ; 0x800 = 2048
    bne       pp66      ;  pc+8+76
    orrs      r4, r2, r3, lsl #12
    orreq     r5, r5, #1
    beq       pp57      ;  pc+8+44
    mov       r0, r2
    mov       r1, r3
    tst       r3, #2, 14  ; 0x80000 = 524288
    orreq     r5, r5, #1
    b         pp57      ;  pc+8+24
pp47
    orrs      r4, r2, r3, lsl #12
    beq       pp58      ;  pc+8+64
    tst       r3, #2, 14  ; 0x80000 = 524288
    orreq     r5, r5, #1
    mov       r1, r3
    mov       r0, r2
    b         pp57      ;  pc+8-4
pp57
    orr       r1, r1, #0x7F, 8  ; 0x7F000000 = 2130706432
    orr       r1, r1, #0x3E, 14  ; 0xF80000 = 16252928
    mov       r3, r5
    b         pp71      ;  pc+8-476
pp46
    orr       r5, r5, #2
pp66
    eors      r4, r1, r3
    mov       r0, #0
    mov       r1, #0x7F, 8  ; 0x7F000000 = 2130706432
    orr       r1, r1, #0xF, 12  ; 0xF00000 = 15728640
    orrmi     r1, r1, #2, 2  ; 0x80000000 = 2147483648
    mov       r3, r5
    b         pp71      ;  pc+8-508
pp58
    eors      r4, r1, r3
    mov       r0, #0
    mov       r1, #0
    orrmi     r1, r1, #2, 2  ; 0x80000000 = 2147483648
    mov       r3, r5
    b         pp71      ;  pc+8-532
pp800
    DCD 0x00000000
    DCD 0x04030201
    DCD 0x08070605
    DCD 0x0C0B0A09
    DCD 0x110F0E0D
    DCD 0x15141312
    DCD 0x1A191816
    DCD 0x1F1E1C1B
    DCD 0x24232120
    DCD 0x29282725
    DCD 0x2F2E2C2B
    DCD 0x35333230
    DCD 0x3B393836
    DCD 0x413F3E3C
    DCD 0x47464442
    DCD 0x4E4C4A49
    DCD 0x55535150
    DCD 0x5C5A5857
    DCD 0x6462605E
    DCD 0x6C6A6866
    DCD 0x7472706E
    DCD 0x7D7A7876
    DCD 0x8683817F
    DCD 0x8F8D8A88
    DCD 0x99979492
    DCD 0xA4A19E9C
    DCD 0xAFACA9A6
    DCD 0xBAB7B4B2
    DCD 0xC7C3C0BD
    DCD 0xD4D0CDCA
    DCD 0xE1DEDAD7
    DCD 0xF0ECE9E5
    DCD 0xFFFCF8F4
    IMPENTRY __divs
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    str       r0, [sp, #0x10]  ; 0x10 = 16
    mov       lr, #7, 12  ; 0x700000 = 7340032
    str       r1, [sp, #0x14]  ; 0x14 = 20
    mov       r12, #0xFF, 16  ; 0xFF0000 = 16711680
    ands      r2, r12, r0, lsr #7
    andnes    r3, r12, r1, lsr #7
    cmpne     r2, #0xFF, 16  ; 0xFF0000 = 16711680
    cmpne     r3, #0xFF, 16  ; 0xFF0000 = 16711680
    beq       pp74      ;  pc+8+208
    teq       r0, r1
    addmi     r2, r2, #1, 24  ; 0x100 = 256
    orr       r12, r0, #2, 10  ; 0x800000 = 8388608
    orr       r0, r1, #2, 10  ; 0x800000 = 8388608
    bic       r1, r12, #0xFF, 8  ; 0xFF000000 = 4278190080
    bic       r0, r0, #0xFF, 8  ; 0xFF000000 = 4278190080
pp77
    sub       r2, r2, r3
    cmp       r1, r0
    sub       r12, r0, #0x9A, 18  ; 0x268000 = 2523136
    ldrb      lr, [pc, -r12, lsr #16]
    rsb       r0, r0, #0
    add       lr, lr, #1, 24  ; 0x100 = 256
    mul       r12, r0, lr
    movcc     r1, r1, lsl #1
    mov       r12, r12, asr #4
    mul       r3, r12, lr
    mov       lr, lr, lsl #7
    add       lr, lr, r3, asr #21
    mov       r12, r1, lsr #10
    mul       r12, lr, r12
    mov       r1, r1, lsl #12
    mov       r3, r12, lsr #17
    mla       r1, r0, r3, r1
    add       r2, r2, #0x7D, 16  ; 0x7D0000 = 8192000
    mov       r12, r1, lsr #10
    mul       r12, lr, r12
    mov       r1, r1, lsl #11
    mov       r12, r12, lsr #18
    mla       r1, r0, r12, r1
    adc       r2, r2, r2, asr #16
    cmn       r1, r0
    addcs     r1, r1, r0
    adc       r3, r12, r3, lsl #11
    mov       lr, #7, 12  ; 0x700000 = 7340032
    cmp       r1, #0
    orrne     lr, lr, #0x10  ; 0x10 = 16
    cmn       r0, r1, lsl #1
    adc       r0, r3, r2, lsl #23
    cmpne     r2, #0x3F, 14  ; 0xFC0000 = 16515072
    bcc       __fArithReturn  ; 10035E10
    biceq     r0, r0, #1
    cmp       r2, #0x3F, 14  ; 0xFC0000 = 16515072
    bcc       __fArithReturn  ; 10035E10
    bpl       fmul_fdiv_overflow  ; 10037D3C
    mov       r12, r0, lsl #1
    sub       r12, r12, #1, 8  ; 0x1000000 = 16777216
    cmp       r12, #3, 8  ; 0x3000000 = 50331648
    bcc       __fArithReturn  ; 10035E10
    cmp       r1, #1
    adc       r0, r3, r3
    mvn       r3, r2, lsr #8
    rsb       r2, r2, #1
    b         __flt_underflow  ; 10035D6C
pp74
    and       r3, r12, r1, lsr #7
    teq       r0, r1
    orrmi     r2, r2, #1, 24  ; 0x100 = 256
    cmp       r2, r12
    cmpcc     r3, r12
    bcs       pp75      ;  pc+8+40
    movs      r12, r1, lsl #1
    beq       pp76      ;  pc+8+96
    movs      r12, r0, lsl #1
    moveq     r0, r2, lsl #23
    beq       __fArithReturn  ; 10035E10
    add       r12, pc, #0
    b         __flt_normalise2  ; 10046D5C
    mov       r12, r0, lsr #8
    mov       r0, r1, lsr #8
    mov       r1, r12
    b         pp77      ;  pc+8-260
pp75
    mov       r12, #1, 8  ; 0x1000000 = 16777216
    cmn       r12, r0, lsl #1
    cmnls     r12, r1, lsl #1
    bhi       __fArithNaNCheck  ; 10035E60
    cmn       r12, r0, lsl #1
    cmneq     r12, r1, lsl #1
    moveq     r0, r2, lsl #23
    orreq     lr, lr, #1
    orreq     r0, r0, #0x7F, 8  ; 0x7F000000 = 2130706432
    orreq     r0, r0, #3, 10  ; 0xC00000 = 12582912
    beq       __fArithReturn  ; 10035E10
    cmn       r12, r1, lsl #1
    moveq     r0, #0
    bicne     r0, r0, #2, 2  ; 0x80000000 = 2147483648
    orr       r0, r0, r2, lsl #23
    b         __fArithReturn  ; 10035E10
pp76
    movs      r12, r0, lsl #1
    orreq     lr, lr, #1
    orreq     r0, r0, #0x7F, 8  ; 0x7F000000 = 2130706432
    orreq     r0, r0, #3, 10  ; 0xC00000 = 12582912
    orrne     lr, lr, #2
    movne     r0, r2, lsl #23
    orrne     r0, r0, #0x7F, 8  ; 0x7F000000 = 2130706432
    orrne     r0, r0, #2, 10  ; 0x800000 = 8388608
    b         __fArithReturn  ; 10035E10
    IMPENTRY __dtoi
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    str       r1, [sp, #0x14]  ; 0x14 = 20
    orrs      r12, r0, r1, lsl #1
    str       r0, [sp, #0x10]  ; 0x10 = 16
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    movs      r2, r1, lsl #1
    mov       r1, r1, lsl #11
    orr       r1, r1, r0, lsr #21
    mov       r0, r0, lsl #11
    orr       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    bcs       pp78      ;  pc+8+100
    mov       r3, #1, 22  ; 0x400 = 1024
    add       r3, r3, #0x1E  ; 0x1E = 30
    subs      r2, r3, r2, lsr #21
    ble       pp79      ;  pc+8+28
    cmp       r2, #0x20  ; 0x20 = 32
    bge       pp80      ;  pc+8+60
    rsb       r3, r2, #0x20  ; 0x20 = 32
    orrs      r12, r0, r1, lsl r3
    mov       r0, r1, lsr r2
    movne     r3, #0x10  ; 0x10 = 16
    moveq     r3, #0
    b         pp81      ;  pc+8+184
pp79
    rsb       r2, r2, #0
    cmp       r2, #0x20  ; 0x20 = 32
    movge     r1, r0
    movge     r0, #0
    subge     r2, r2, #0x20  ; 0x20 = 32
    mov       r1, r1, lsl r2
    rsb       r2, r2, #0x20  ; 0x20 = 32
    orr       r0, r1, r0, lsr r2
    mov       r3, #1
    b         pp81      ;  pc+8+144
pp80
    bic       r3, r3, #1
    mov       r3, #0x10  ; 0x10 = 16
    mov       r0, #0
    b         pp81      ;  pc+8+128
pp78
    mov       r3, #1, 22  ; 0x400 = 1024
    add       r3, r3, #0x1E  ; 0x1E = 30
    subs      r2, r3, r2, lsr #21
    blt       pp84      ;  pc+8+36
    beq       pp85      ;  pc+8+76
    cmp       r2, #0x20  ; 0x20 = 32
    bge       pp80      ;  pc+8-48
    rsb       r3, r2, #0x20  ; 0x20 = 32
    orrs      r12, r0, r1, lsl r3
    mov       r0, r1, lsr r2
    rsb       r0, r0, #0
    movne     r3, #0x10  ; 0x10 = 16
    moveq     r3, #0
    b         pp81      ;  pc+8+72
pp84
    rsb       r2, r2, #0
    cmp       r2, #0x20  ; 0x20 = 32
    movge     r1, r0
    movge     r0, #0
    subge     r2, r2, #0x20  ; 0x20 = 32
    mov       r1, r1, lsl r2
    rsb       r2, r2, #0x20  ; 0x20 = 32
    orr       r0, r1, r0, lsr r2
    rsb       r0, r0, #0
    mov       r3, #1
    b         pp81      ;  pc+8+28
pp85
    teq       r1, #2, 2  ; 0x80000000 = 2147483648
    movne     r3, #1
    rsbne     r0, r1, #0
    bne       pp81      ;  pc+8+12
    cmp       r0, #0
    movne     r3, #0x10  ; 0x10 = 16
    moveq     r3, #0
    mov       r0, r1
pp81
    tst       r3, #0x1F  ; 0x1F = 31
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    orr       r1, r3, #2, 10  ; 0x800000 = 8388608
    ldr       r3, [sp, #0x14]  ; 0x14 = 20
    ldr       r2, [sp, #0x10]  ; 0x10 = 16
    str       r0, [sp, #8]
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __dtoi64
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    str       r1, [sp, #0x14]  ; 0x14 = 20
    orrs      r12, r0, r1, lsl #1
    str       r0, [sp, #0x10]  ; 0x10 = 16
    moveq     r1, r0
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    movs      r2, r1, lsl #1
    mov       r1, r1, lsl #11
    orr       r1, r1, r0, lsr #21
    mov       r0, r0, lsl #11
    orr       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    bcs       pp90      ;  pc+8+140
    mov       r3, #1, 22  ; 0x400 = 1024
    add       r3, r3, #0x3E  ; 0x3E = 62
    subs      r2, r3, r2, lsr #21
    ble       pp91      ;  pc+8+64
    cmp       r2, #0x40  ; 0x40 = 64
    bge       pp92      ;  pc+8+100
    mov       r12, #0
    cmp       r2, #0x20  ; 0x20 = 32
    blt       pp93      ;  pc+8+12
    mov       r12, r0
    mov       r0, r1
    mov       r1, #0
    sub       r2, r2, #0x20  ; 0x20 = 32
pp93
    rsb       r3, r2, #0x20  ; 0x20 = 32
    orrs      r12, r12, r0, lsl r3
    mov       r0, r0, lsr r2
    orr       r0, r0, r1, lsl r3
    mov       r1, r1, lsr r2
    movne     r3, #0x10  ; 0x10 = 16
    moveq     r3, #0
    b         pp94      ;  pc+8+228
pp91
    rsb       r2, r2, #0
    cmp       r2, #0x20  ; 0x20 = 32
    movge     r1, r0
    movge     r0, #0
    subge     r2, r2, #0x20  ; 0x20 = 32
    mov       r1, r1, lsl r2
    rsb       r3, r2, #0x20  ; 0x20 = 32
    orr       r1, r1, r0, lsr r3
    mov       r0, r0, lsl r2
    mov       r3, #1
    b         pp94      ;  pc+8+184
pp92
    mov       r3, #0x10  ; 0x10 = 16
    mov       r0, #0
    mov       r1, #0
    b         pp94      ;  pc+8+168
pp90
    mov       r3, #1, 22  ; 0x400 = 1024
    add       r3, r3, #0x3E  ; 0x3E = 62
    subs      r2, r3, r2, lsr #21
    blt       pp97      ;  pc+8+76
    beq       pp98      ;  pc+8+124
    cmp       r2, #0x40  ; 0x40 = 64
    bge       pp92      ;  pc+8-48
    mov       r12, #0
    cmp       r2, #0x20  ; 0x20 = 32
    blt       pp100     ;  pc+8+12
    mov       r12, r0
    mov       r0, r1
    mov       r1, #0
    sub       r2, r2, #0x20  ; 0x20 = 32
pp100
    rsb       r3, r2, #0x20  ; 0x20 = 32
    orrs      r12, r12, r0, lsl r3
    mov       r0, r0, lsr r2
    orr       r0, r0, r1, lsl r3
    mov       r1, r1, lsr r2
    movne     r3, #0x10  ; 0x10 = 16
    moveq     r3, #0
    rsbs      r0, r0, #0
    rsc       r1, r1, #0
    b         pp94      ;  pc+8+72
pp97
    rsb       r2, r2, #0
    cmp       r2, #0x20  ; 0x20 = 32
    movge     r1, r0
    movge     r0, #0
    subge     r2, r2, #0x20  ; 0x20 = 32
    mov       r1, r1, lsl r2
    rsb       r3, r2, #0x20  ; 0x20 = 32
    orr       r1, r1, r0, lsr r3
    mov       r0, r0, lsl r2
    rsbs      r0, r0, #0
    rsc       r1, r1, #0
    mov       r3, #1
    b         pp94      ;  pc+8+20
pp98
    teq       r1, #2, 2  ; 0x80000000 = 2147483648
    teqeq     r0, #0
    moveq     r3, #0
    movne     r3, #1
    rsbs      r0, r0, #0
    rsc       r1, r1, #0
pp94
    tst       r3, #0x1F  ; 0x1F = 31
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    orr       r12, r3, #9, 12  ; 0x900000 = 9437184
    ldr       r3, [sp, #0x14]  ; 0x14 = 20
    ldr       r2, [sp, #0x10]  ; 0x10 = 16
    str       r0, [sp, #8]
    str       r1, [sp, #0xC]  ; 0xC = 12
    mov       r1, r12
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    ldr       r1, [sp, #0x14]  ; 0x14 = 20
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __dtos
    stmdb     sp!, {r4, lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    str       r1, [sp, #0x14]  ; 0x14 = 20
    mov       r4, #0xA, 12  ; 0xA00000 = 10485760
    orrs      r12, r0, r1, lsl #1
    str       r0, [sp, #0x10]  ; 0x10 = 16
    beq       pp103     ;  pc+8+156
    and       r2, r1, #2, 2  ; 0x80000000 = 2147483648
    mov       r12, #7, 4  ; 0x70000000 = 1879048192
    rsb       r1, r12, r1, lsl #1
    movs      r3, r1, lsr #21
    beq       pp104     ;  pc+8+144
    cmp       r3, #0xFE  ; 0xFE = 254
    bcs       pp105     ;  pc+8+36
pp110
    movs      r12, r0, lsl #3
    orrne     r4, r4, #0x10  ; 0x10 = 16
    orrs      r12, r2, r0, lsr #29
    mov       r3, r0
    adc       r0, r12, r1, lsl #2
    bcc       pp106     ;  pc+8+196
    movs      r3, r3, lsl #4
    bne       pp106     ;  pc+8+188
    bic       r0, r0, #1
    b         pp106     ;  pc+8+180
pp105
    cmp       r3, #0x12, 26  ; 0x480 = 1152
    bcs       pp104     ;  pc+8+88
    cmp       r3, #0xFE  ; 0xFE = 254
    moveq     r12, r1, lsl #11
    orreq     r12, r12, r0, lsr #20
    cmneq     r12, #1, 24  ; 0x100 = 256
    bcc       pp110     ;  pc+8-72
    add       r3, r3, #1
    teq       r3, #0x12, 26  ; 0x480 = 1152
    movne     r0, r2
    bne       pp111     ;  pc+8+120
    orrs      r12, r0, r1, lsl #11
    moveq     r12, #0xFF, 8  ; 0xFF000000 = 4278190080
    orr       r0, r2, r12, lsr #1
    beq       pp106     ;  pc+8+120
    movs      r12, r1, lsl #11
    orrpl     r4, r4, #1
    ldr       r2, [pc, #0xC]  ;  pc+8+12 = 10036804
    mov       r12, r1, lsl #2
    orr       r12, r12, r0, lsr #29
    orr       r0, r2, r12
    b         pp106     ;  pc+8+92
    DCD 0x7FC00000
pp103
    mov       r0, r1
    b         pp106     ;  pc+8+80
pp104
    cmp       r3, #0
    subne     r3, r3, #2, 22  ; 0x800 = 2048
    rsb       r3, r3, #9
    rsbs      r12, r3, #0x21  ; 0x21 = 33
    movls     r0, r2
    orrls     r4, r4, #0x18  ; 0x18 = 24
    bls       pp106     ;  pc+8+52
    mov       r1, r1, lsl #10
    orr       r1, r1, r0, lsr #21
    orr       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    movs      r12, r1, lsl r12
    orrne     r4, r4, #0x18  ; 0x18 = 24
    adc       r0, r2, r1, lsr r3
    bcc       pp106     ;  pc+8+24
    moveqs    r0, r0, lsl #11
    biceq     r0, r0, #1
    b         pp106     ;  pc+8+12
pp111
    orr       r4, r4, #0x14  ; 0x14 = 20
    and       r0, r0, #2, 2  ; 0x80000000 = 2147483648
    mov       r1, #0xFF, 8  ; 0xFF000000 = 4278190080
    orr       r0, r0, r1, lsr #1
pp106
    tst       r4, #0x1F  ; 0x1F = 31
    mov       r1, r4
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {r4, lr}  ; ldmeqfd
    moveq     pc, lr
    str       r0, [sp, #8]
    ldr       r2, [sp, #0x10]  ; 0x10 = 16
    ldr       r3, [sp, #0x14]  ; 0x14 = 20
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {r4, lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __dtou
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    str       r1, [sp, #0x14]  ; 0x14 = 20
    orrs      r12, r0, r1, lsl #1
    str       r0, [sp, #0x10]  ; 0x10 = 16
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    movs      r2, r1, lsl #1
    mov       r1, r1, lsl #11
    orr       r1, r1, r0, lsr #21
    mov       r0, r0, lsl #11
    orr       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    bcs       pp118     ;  pc+8+100
    mov       r3, #1, 22  ; 0x400 = 1024
    add       r3, r3, #0x1E  ; 0x1E = 30
    subs      r2, r3, r2, lsr #21
    blt       pp119     ;  pc+8+28
    cmp       r2, #0x20  ; 0x20 = 32
    bge       pp120     ;  pc+8+60
    rsb       r3, r2, #0x20  ; 0x20 = 32
    orrs      r12, r0, r1, lsl r3
    mov       r0, r1, lsr r2
    movne     r3, #0x10  ; 0x10 = 16
    moveq     r3, #0
    b         pp121     ;  pc+8+132
pp119
    rsb       r2, r2, #0
    cmp       r2, #0x20  ; 0x20 = 32
    movge     r1, r0
    movge     r0, #0
    subge     r2, r2, #0x20  ; 0x20 = 32
    mov       r1, r1, lsl r2
    rsb       r2, r2, #0x20  ; 0x20 = 32
    orr       r0, r1, r0, lsr r2
    mov       r3, #1
    b         pp121     ;  pc+8+92
pp120
    bic       r3, r3, #1
    mov       r3, #0x10  ; 0x10 = 16
    mov       r0, #0
    b         pp121     ;  pc+8+76
pp118
    mov       r3, #1, 22  ; 0x400 = 1024
    add       r3, r3, #0x1E  ; 0x1E = 30
    subs      r2, r3, r2, lsr #21
    blt       pp124     ;  pc+8+20
    cmp       r2, #0x20  ; 0x20 = 32
    bge       pp120     ;  pc+8-44
    mov       r0, r1, lsr r2
    rsb       r0, r0, #0
    mov       r3, #1
    b         pp121     ;  pc+8+36
pp124
    rsb       r2, r2, #0
    cmp       r2, #0x20  ; 0x20 = 32
    movge     r1, r0
    movge     r0, #0
    subge     r2, r2, #0x20  ; 0x20 = 32
    mov       r1, r1, lsl r2
    rsb       r2, r2, #0x20  ; 0x20 = 32
    orr       r0, r1, r0, lsr r2
    rsb       r0, r0, #0
    mov       r3, #1
pp121
    tst       r3, #0x1F  ; 0x1F = 31
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    orr       r1, r3, #0xB, 12  ; 0xB00000 = 11534336
    ldr       r3, [sp, #0x14]  ; 0x14 = 20
    ldr       r2, [sp, #0x10]  ; 0x10 = 16
    str       r0, [sp, #8]
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __dtou64
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    str       r1, [sp, #0x14]  ; 0x14 = 20
    orrs      r12, r0, r1, lsl #1
    str       r0, [sp, #0x10]  ; 0x10 = 16
    moveq     r1, r0
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    movs      r2, r1, lsl #1
    mov       r1, r1, lsl #11
    orr       r1, r1, r0, lsr #21
    mov       r0, r0, lsl #11
    orr       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    bcs       pp127     ;  pc+8+140
    mov       r3, #1, 22  ; 0x400 = 1024
    add       r3, r3, #0x3E  ; 0x3E = 62
    subs      r2, r3, r2, lsr #21
    blt       pp128     ;  pc+8+64
    cmp       r2, #0x40  ; 0x40 = 64
    bge       pp129     ;  pc+8+100
    mov       r12, #0
    cmp       r2, #0x20  ; 0x20 = 32
    blt       pp130     ;  pc+8+12
    mov       r12, r0
    mov       r0, r1
    mov       r1, #0
    sub       r2, r2, #0x20  ; 0x20 = 32
pp130
    rsb       r3, r2, #0x20  ; 0x20 = 32
    orrs      r12, r12, r0, lsl r3
    mov       r0, r0, lsr r2
    orr       r0, r0, r1, lsl r3
    mov       r1, r1, lsr r2
    movne     r3, #0x10  ; 0x10 = 16
    moveq     r3, #0
    b         pp131     ;  pc+8+176
pp128
    rsb       r2, r2, #0
    cmp       r2, #0x20  ; 0x20 = 32
    movge     r1, r0
    movge     r0, #0
    subge     r2, r2, #0x20  ; 0x20 = 32
    mov       r1, r1, lsl r2
    rsb       r3, r2, #0x20  ; 0x20 = 32
    orr       r1, r1, r0, lsr r3
    mov       r0, r0, lsl r2
    mov       r3, #1
    b         pp131     ;  pc+8+132
pp129
    mov       r3, #0x10  ; 0x10 = 16
    mov       r0, #0
    mov       r1, #0
    b         pp131     ;  pc+8+116
pp127
    mov       r3, #1, 22  ; 0x400 = 1024
    add       r3, r3, #0x3E  ; 0x3E = 62
    subs      r2, r3, r2, lsr #21
    blt       pp134     ;  pc+8+52
    cmp       r2, #0x40  ; 0x40 = 64
    bge       pp129     ;  pc+8-44
    cmp       r2, #0x20  ; 0x20 = 32
    movge     r0, r1
    movge     r1, #0
    subge     r2, r2, #0x20  ; 0x20 = 32
    rsb       r3, r2, #0x20  ; 0x20 = 32
    mov       r0, r0, lsr r2
    orr       r0, r0, r1, lsl r3
    mov       r1, r1, lsr r2
    rsbs      r0, r0, #0
    rsc       r1, r1, #0
    mov       r3, #1
    b         pp131     ;  pc+8+44
pp134
    rsb       r2, r2, #0
    cmp       r2, #0x20  ; 0x20 = 32
    movge     r1, r0
    movge     r0, #0
    subge     r2, r2, #0x20  ; 0x20 = 32
    mov       r1, r1, lsl r2
    rsb       r3, r2, #0x20  ; 0x20 = 32
    orr       r1, r1, r0, lsr r3
    mov       r0, r0, lsl r2
    rsbs      r0, r0, #0
    rsc       r1, r1, #0
    mov       r3, #1
pp131
    tst       r3, #0x1F  ; 0x1F = 31
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    orr       r12, r3, #3, 10  ; 0xC00000 = 12582912
    ldr       r3, [sp, #0x14]  ; 0x14 = 20
    ldr       r2, [sp, #0x10]  ; 0x10 = 16
    str       r0, [sp, #8]
    str       r1, [sp, #0xC]  ; 0xC = 12
    mov       r1, r12
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    ldr       r1, [sp, #0x14]  ; 0x14 = 20
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __eqd
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x20  ; 0x20 = 32
    orrs      r12, r1, r3
    bmi       pp137     ;  pc+8+72
    cmn       r12, #1, 12  ; 0x100000 = 1048576
    bmi       pp138     ;  pc+8+24
    cmp       r1, r3
    cmpeq     r0, r2
    mov       r0, #0
    moveq     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp138
    cmn       r1, #1, 12  ; 0x100000 = 1048576
    cmnpl     r3, #1, 12  ; 0x100000 = 1048576
    bmi       pp139     ;  pc+8+112
pp143
    cmp       r1, r3
    cmpeq     r0, r2
    mov       r0, #0
    moveq     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp137
    cmn       r12, #1, 12  ; 0x100000 = 1048576
    bpl       pp140     ;  pc+8+32
    orrs      r12, r0, r1, lsl #1
    orreqs    r12, r2, r3, lsl #1
    cmpne     r3, r1
    cmpeq     r2, r0
    mov       r0, #0
    moveq     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp140
    mov       r12, #2, 12  ; 0x200000 = 2097152
    cmn       r12, r1, lsl #1
    cmncc     r12, r3, lsl #1
    bcs       pp139     ;  pc+8+24
pp144
    cmp       r3, r1
    cmpeq     r2, r0
    mov       r0, #0
    moveq     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp139
    mov       r12, #2, 12  ; 0x200000 = 2097152
    cmn       r12, r1, lsl #1
    cmpeq     r0, #0
    cmnls     r12, r3, lsl #1
    cmpeq     r2, #0
    bhi       pp142     ;  pc+8+8
    orrs      r12, r1, r3
    bpl       pp143     ;  pc+8-152
    b         pp144     ;  pc+8-68
pp142
    mov       r12, #0x7F, 28  ; 0x7F0 = 2032
    orr       r12, r12, #0xF  ; 0xF = 15
    mov       lr, r1, lsl #1
    mov       lr, lr, lsr #21
    cmp       lr, r12
    bne       pp145     ;  pc+8+16
    mov       lr, r1, lsl #14
    orrs      lr, lr, r0
    beq       pp145     ;  pc+8+4
    tst       r1, #2, 14  ; 0x80000 = 524288
    beq       pp147     ;  pc+8+40
pp145
    mov       lr, r3, lsl #1
    mov       lr, lr, lsr #21
    cmp       lr, r12
    bne       pp148     ;  pc+8+16
    mov       lr, r3, lsl #12
    orrs      lr, lr, r2
    beq       pp148     ;  pc+8+4
    tst       r3, #2, 14  ; 0x80000 = 524288
    beq       pp147     ;  pc+8+4
pp148
    mov       r0, #3
    b         pp151     ;  pc+8+44
pp147
    str       r2, [sp]
    str       r3, [sp, #4]
    mov       r3, #3
    str       r3, [sp, #8]
    mov       r3, r1
    mov       r2, r0
    mov       r1, #1, 10  ; 0x400000 = 4194304
    orr       r1, r1, #1
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    b         pp151     ;  pc+8-4
pp151
    cmp       r0, #0
    moveq     r0, #1
    movne     r0, #0
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __eqs
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    orrs      r12, r0, r1
    bmi       pp153     ;  pc+8+84
    cmn       r12, #2, 10  ; 0x800000 = 8388608
    bmi       pp154     ;  pc+8+20
    cmp       r0, r1
    mov       r0, #0
    moveq     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp154
    cmn       r0, #2, 10  ; 0x800000 = 8388608
    cmnpl     r1, #2, 10  ; 0x800000 = 8388608
    bmi       pp155     ;  pc+8+20
pp156
    cmp       r0, r1
    mov       r0, #0
    moveq     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp155
    mov       r12, #1, 8  ; 0x1000000 = 16777216
    cmn       r12, r0, lsl #1
    cmnls     r12, r1, lsl #1
    bls       pp156     ;  pc+8-44
    b         pp157     ;  pc+8+72
pp153
    cmn       r12, #2, 10  ; 0x800000 = 8388608
    bpl       pp158     ;  pc+8+24
    movs      r12, r12, lsl #1
    cmpne     r1, r0
    mov       r0, #0
    moveq     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp158
    mov       r12, #1, 8  ; 0x1000000 = 16777216
    cmn       r12, r0, lsl #1
    cmnls     r12, r1, lsl #1
    bhi       pp157     ;  pc+8+20
    cmp       r1, r0
    mov       r0, #0
    moveq     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp157
    mov       lr, r0, lsl #1
    mov       lr, lr, lsr #24
    cmp       lr, #0xFF  ; 0xFF = 255
    bne       pp160     ;  pc+8+12
    movs      lr, r0, lsl #9
    beq       pp160     ;  pc+8+4
    tst       r0, #1, 10  ; 0x400000 = 4194304
    beq       pp162     ;  pc+8+36
pp160
    mov       lr, r1, lsl #1
    mov       lr, lr, lsr #24
    cmp       lr, #0xFF  ; 0xFF = 255
    bne       pp163     ;  pc+8+12
    movs      lr, r1, lsl #9
    beq       pp163     ;  pc+8+4
    tst       r1, #1, 10  ; 0x400000 = 4194304
    beq       pp162     ;  pc+8+4
pp163
    mov       r0, #3
    b         pp166     ;  pc+8+36
pp162
    str       r1, [sp]
    mov       r3, #3
    str       r3, [sp, #8]
    mov       r2, r0
    mov       r1, #1
    orr       r1, r1, #5, 12  ; 0x500000 = 5242880
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    b         pp166     ;  pc+8-4
pp166
    cmp       r0, #0
    moveq     r0, #1
    movne     r0, #0
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __ged
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x20  ; 0x20 = 32
    orrs      r12, r1, r3
    bmi       pp168     ;  pc+8+72
    cmn       r12, #1, 12  ; 0x100000 = 1048576
    bmi       pp169     ;  pc+8+24
    cmp       r1, r3
    cmpeq     r0, r2
    mov       r0, #0
    movcs     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp169
    cmn       r1, #1, 12  ; 0x100000 = 1048576
    cmnpl     r3, #1, 12  ; 0x100000 = 1048576
    bmi       pp170     ;  pc+8+112
pp174
    cmp       r1, r3
    cmpeq     r0, r2
    mov       r0, #0
    movcs     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp168
    cmn       r12, #1, 12  ; 0x100000 = 1048576
    bpl       pp171     ;  pc+8+32
    orrs      r12, r0, r1, lsl #1
    orreqs    r12, r2, r3, lsl #1
    cmpne     r3, r1
    cmpeq     r2, r0
    mov       r0, #0
    movcs     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp171
    mov       r12, #2, 12  ; 0x200000 = 2097152
    cmn       r12, r1, lsl #1
    cmncc     r12, r3, lsl #1
    bcs       pp170     ;  pc+8+24
pp175
    cmp       r3, r1
    cmpeq     r2, r0
    mov       r0, #0
    movcs     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp170
    mov       r12, #2, 12  ; 0x200000 = 2097152
    cmn       r12, r1, lsl #1
    cmpeq     r0, #0
    cmnls     r12, r3, lsl #1
    cmpeq     r2, #0
    bhi       pp173     ;  pc+8+8
    orrs      r12, r1, r3
    bpl       pp174     ;  pc+8-152
    b         pp175     ;  pc+8-68
pp173
    str       r2, [sp]
    str       r3, [sp, #4]
    mov       r3, #3
    str       r3, [sp, #8]
    mov       r3, r1
    mov       r2, r0
    mov       r1, #1, 10  ; 0x400000 = 4194304
    orr       r1, r1, #1
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x20  ; 0x20 = 32
    b         pp176     ;  pc+8-4
pp176
    cmp       r0, #1
    moveq     r0, #1
    beq       pp177     ;  pc+8+8
    cmp       r0, #0
    moveq     r0, #1
    movne     r0, #0
pp177
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __ges
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    orrs      r12, r0, r1
    bmi       pp178     ;  pc+8+84
    cmn       r12, #2, 10  ; 0x800000 = 8388608
    bmi       pp179     ;  pc+8+20
    cmp       r0, r1
    mov       r0, #0
    movcs     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp179
    cmn       r0, #2, 10  ; 0x800000 = 8388608
    cmnpl     r1, #2, 10  ; 0x800000 = 8388608
    bmi       pp180     ;  pc+8+20
pp181
    cmp       r0, r1
    mov       r0, #0
    movcs     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp180
    mov       r12, #1, 8  ; 0x1000000 = 16777216
    cmn       r12, r0, lsl #1
    cmnls     r12, r1, lsl #1
    bls       pp181     ;  pc+8-44
    b         pp182     ;  pc+8+72
pp178
    cmn       r12, #2, 10  ; 0x800000 = 8388608
    bpl       pp183     ;  pc+8+24
    movs      r12, r12, lsl #1
    cmpne     r1, r0
    mov       r0, #0
    movcs     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp183
    mov       r12, #1, 8  ; 0x1000000 = 16777216
    cmn       r12, r0, lsl #1
    cmnls     r12, r1, lsl #1
    bhi       pp182     ;  pc+8+20
    cmp       r1, r0
    mov       r0, #0
    movcs     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp182
    str       r1, [sp]
    mov       r3, #3
    str       r3, [sp, #8]
    mov       r2, r0
    mov       r1, #1
    orr       r1, r1, #5, 12  ; 0x500000 = 5242880
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x18  ; 0x18 = 24
    b         pp185     ;  pc+8-4
pp185
    cmp       r0, #1
    moveq     r0, #1
    beq       pp186     ;  pc+8+8
    cmp       r0, #0
    moveq     r0, #1
    movne     r0, #0
pp186
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __gtd
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x20  ; 0x20 = 32
    orrs      r12, r1, r3
    bmi       pp187     ;  pc+8+72
    cmn       r12, #1, 12  ; 0x100000 = 1048576
    bmi       pp188     ;  pc+8+24
    cmp       r1, r3
    cmpeq     r0, r2
    mov       r0, #0
    movhi     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp188
    cmn       r1, #1, 12  ; 0x100000 = 1048576
    cmnpl     r3, #1, 12  ; 0x100000 = 1048576
    bmi       pp189     ;  pc+8+112
pp193
    cmp       r1, r3
    cmpeq     r0, r2
    mov       r0, #0
    movhi     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp187
    cmn       r12, #1, 12  ; 0x100000 = 1048576
    bpl       pp190     ;  pc+8+32
    orrs      r12, r0, r1, lsl #1
    orreqs    r12, r2, r3, lsl #1
    cmpne     r3, r1
    cmpeq     r2, r0
    mov       r0, #0
    movhi     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp190
    mov       r12, #2, 12  ; 0x200000 = 2097152
    cmn       r12, r1, lsl #1
    cmncc     r12, r3, lsl #1
    bcs       pp189     ;  pc+8+24
pp194
    cmp       r3, r1
    cmpeq     r2, r0
    mov       r0, #0
    movhi     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp189
    mov       r12, #2, 12  ; 0x200000 = 2097152
    cmn       r12, r1, lsl #1
    cmpeq     r0, #0
    cmnls     r12, r3, lsl #1
    cmpeq     r2, #0
    bhi       pp192     ;  pc+8+8
    orrs      r12, r1, r3
    bpl       pp193     ;  pc+8-152
    b         pp194     ;  pc+8-68
pp192
    str       r2, [sp]
    str       r3, [sp, #4]
    mov       r3, #3
    str       r3, [sp, #8]
    mov       r3, r1
    mov       r2, r0
    mov       r1, #1, 10  ; 0x400000 = 4194304
    orr       r1, r1, #1
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x20  ; 0x20 = 32
    b         pp195     ;  pc+8-4
pp195
    cmp       r0, #1
    moveq     r0, #1
    movne     r0, #0
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __gts
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    orrs      r12, r0, r1
    bmi       pp196     ;  pc+8+84
    cmn       r12, #2, 10  ; 0x800000 = 8388608
    bmi       pp197     ;  pc+8+20
    cmp       r0, r1
    mov       r0, #0
    movhi     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp197
    cmn       r0, #2, 10  ; 0x800000 = 8388608
    cmnpl     r1, #2, 10  ; 0x800000 = 8388608
    bmi       pp198     ;  pc+8+20
pp199
    cmp       r0, r1
    mov       r0, #0
    movhi     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp198
    mov       r12, #1, 8  ; 0x1000000 = 16777216
    cmn       r12, r0, lsl #1
    cmnls     r12, r1, lsl #1
    bls       pp199     ;  pc+8-44
    b         pp200     ;  pc+8+72
pp196
    cmn       r12, #2, 10  ; 0x800000 = 8388608
    bpl       pp201     ;  pc+8+24
    movs      r12, r12, lsl #1
    cmpne     r1, r0
    mov       r0, #0
    movhi     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp201
    mov       r12, #1, 8  ; 0x1000000 = 16777216
    cmn       r12, r0, lsl #1
    cmnls     r12, r1, lsl #1
    bhi       pp200     ;  pc+8+20
    cmp       r1, r0
    mov       r0, #0
    movhi     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp200
    str       r1, [sp]
    mov       r3, #3
    str       r3, [sp, #8]
    mov       r2, r0
    mov       r1, #1
    orr       r1, r1, #5, 12  ; 0x500000 = 5242880
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x18  ; 0x18 = 24
    b         pp203     ;  pc+8-4
pp203
    cmp       r0, #1
    moveq     r0, #1
    movne     r0, #0
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __u64tod
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    str       r0, [sp, #0x10]  ; 0x10 = 16
    orrs      r2, r0, r1
    str       r1, [sp, #0x14]  ; 0x14 = 20
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    mov       lr, #6, 10  ; 0x1800000 = 25165824
    mov       r12, #0
    b         pp204     ;  pc+8+48
    IMPENTRY __i64tod
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    str       r0, [sp, #0x10]  ; 0x10 = 16
    orrs      r2, r0, r1
    str       r1, [sp, #0x14]  ; 0x14 = 20
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    mov       lr, #0x16, 12  ; 0x1600000 = 23068672
    ands      r12, r1, #2, 2  ; 0x80000000 = 2147483648
    beq       pp204     ;  pc+8+4
    rsbs      r0, r0, #0
    rsc       r1, r1, #0
pp204
    mov       r2, #0
    cmp       r1, #0
    addeq     r2, r2, #0x20  ; 0x20 = 32
    moveq     r1, r0
    moveq     r0, #0
    movs      r3, r1, lsr #16
    addeq     r2, r2, #0x10  ; 0x10 = 16
    moveq     r1, r1, lsl #16
    tst       r1, #0xFF, 8  ; 0xFF000000 = 4278190080
    addeq     r2, r2, #8
    moveq     r1, r1, lsl #8
    tst       r1, #0xF, 4  ; 0xF0000000 = 4026531840
    addeq     r2, r2, #4
    moveq     r1, r1, lsl #4
    tst       r1, #3, 2  ; 0xC0000000 = 3221225472
    addeq     r2, r2, #2
    moveqs    r1, r1, lsl #2
    addpl     r2, r2, #1
    movpl     r1, r1, lsl #1
    mov       r3, #1, 22  ; 0x400 = 1024
    add       r3, r3, #0x3E  ; 0x3E = 62
    rsb       r3, r2, r3
    orr       r12, r12, r3, lsl #20
    cmp       r2, #0x20  ; 0x20 = 32
    mov       r1, r1, lsl #1
    add       r2, r2, #1
    bge       pp206     ;  pc+8+8
    rsb       r3, r2, #0x20  ; 0x20 = 32
    orr       r1, r1, r0, lsr r3
    mov       r0, r0, lsl r2
pp206
    orr       r3, r12, r1, lsr #12
    mov       r2, r1, lsl #20
    orr       r2, r2, r0, lsr #12
    movs      r0, r0, lsl #20
    orrne     lr, lr, #0x10  ; 0x10 = 16
    movs      r0, r0, lsl #1
    bcc       pp207     ;  pc+8+12
    movs      r0, r0, lsr #1
    tsteq     r2, #1
    addnes    r2, r2, #1
    adc       r3, r3, #0
pp207
    mov       r1, r3
    mov       r0, r2
    tst       lr, #0x1F  ; 0x1F = 31
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    ldr       r2, [sp, #0x10]  ; 0x10 = 16
    ldr       r3, [sp, #0x14]  ; 0x14 = 20
    str       r0, [sp, #8]
    str       r1, [sp, #0xC]  ; 0xC = 12
    add       r0, sp, #0x10  ; 0x10 = 16
    mov       r1, lr
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    ldr       r1, [sp, #0x14]  ; 0x14 = 20
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __u64tos
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    str       r0, [sp, #0x10]  ; 0x10 = 16
    orrs      r2, r0, r1
    str       r1, [sp, #0x14]  ; 0x14 = 20
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    mov       lr, #0x19, 12  ; 0x1900000 = 26214400
    mov       r12, #0
    b         pp208     ;  pc+8+48
    IMPENTRY __i64tos
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    str       r0, [sp, #0x10]  ; 0x10 = 16
    orrs      r2, r0, r1
    str       r1, [sp, #0x14]  ; 0x14 = 20
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    mov       lr, #0x17, 12  ; 0x1700000 = 24117248
    ands      r12, r1, #2, 2  ; 0x80000000 = 2147483648
    beq       pp208     ;  pc+8+4
    rsbs      r0, r0, #0
    rsc       r1, r1, #0
pp208
    mov       r2, #0
    cmp       r1, #0
    addeq     r2, r2, #0x20  ; 0x20 = 32
    moveq     r1, r0
    moveq     r0, #0
    movs      r3, r1, lsr #16
    addeq     r2, r2, #0x10  ; 0x10 = 16
    moveq     r1, r1, lsl #16
    tst       r1, #0xFF, 8  ; 0xFF000000 = 4278190080
    addeq     r2, r2, #8
    moveq     r1, r1, lsl #8
    tst       r1, #0xF, 4  ; 0xF0000000 = 4026531840
    addeq     r2, r2, #4
    moveq     r1, r1, lsl #4
    tst       r1, #3, 2  ; 0xC0000000 = 3221225472
    addeq     r2, r2, #2
    moveqs    r1, r1, lsl #2
    addpl     r2, r2, #1
    movpl     r1, r1, lsl #1
    rsb       r3, r2, #0xBE  ; 0xBE = 190
    orr       r12, r12, r3, lsl #23
    cmp       r2, #0x20  ; 0x20 = 32
    mov       r1, r1, lsl #1
    add       r2, r2, #1
    bge       pp210     ;  pc+8+12
    rsb       r3, r2, #0x20  ; 0x20 = 32
    orr       r1, r1, r0, lsr r3
    movs      r0, r0, lsl r2
    orrne     r1, r1, #1
pp210
    orr       r0, r12, r1, lsr #9
    movs      r1, r1, lsl #23
    orrne     lr, lr, #0x10  ; 0x10 = 16
    movs      r1, r1, lsl #1
    bcc       pp211     ;  pc+8+4
    tsteq     r0, #1
    addne     r0, r0, #1
pp211
    tst       lr, #0x1F  ; 0x1F = 31
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    ldr       r2, [sp, #0x10]  ; 0x10 = 16
    ldr       r3, [sp, #0x14]  ; 0x14 = 20
    str       r0, [sp, #8]
    add       r0, sp, #0x10  ; 0x10 = 16
    mov       r1, lr
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __utod
    mov       r2, #1, 2  ; 0x40000000 = 1073741824
    b         pp212     ;  pc+8+8
    IMPENTRY __itod
    ands      r2, r0, #2, 2  ; 0x80000000 = 2147483648
    rsbne     r0, r0, #0
    orr       r2, r2, #1, 2  ; 0x40000000 = 1073741824
pp212
    movs      r1, r0, lsr #16
    addne     r2, r2, #1, 8  ; 0x1000000 = 16777216
    moveqs    r0, r0, lsl #16
    moveq     pc, lr
    tst       r0, #0xFF, 8  ; 0xFF000000 = 4278190080
    addne     r2, r2, #2, 10  ; 0x800000 = 8388608
    moveq     r0, r0, lsl #8
    tst       r0, #0xF, 4  ; 0xF0000000 = 4026531840
    addne     r2, r2, #1, 10  ; 0x400000 = 4194304
    moveq     r0, r0, lsl #4
    tst       r0, #3, 2  ; 0xC0000000 = 3221225472
    addne     r2, r2, #2, 12  ; 0x200000 = 2097152
    moveqs    r0, r0, lsl #2
    addmi     r2, r2, #1, 12  ; 0x100000 = 1048576
    movpl     r0, r0, lsl #1
    mov       r12, r0
    mov       r0, r12, lsl #21
    add       r1, r2, r12, asr #11
    mov       pc, lr
    IMPENTRY __utos
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    mov       r12, r0
    mov       r2, #0x15, 12  ; 0x1500000 = 22020096
    mov       r3, #1, 2  ; 0x40000000 = 1073741824
    b         pp213     ;  pc+8+24
    IMPENTRY __itos
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    mov       r12, r0
    mov       r2, #0xD, 12  ; 0xD00000 = 13631488
    ands      r3, r0, #2, 2  ; 0x80000000 = 2147483648
    rsbne     r0, r0, #0
    orr       r3, r3, #1, 2  ; 0x40000000 = 1073741824
pp213
    movs      r1, r0, lsr #16
    addne     r3, r3, #2, 6  ; 0x8000000 = 134217728
    moveqs    r0, r0, lsl #16
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    tst       r0, #0xFF, 8  ; 0xFF000000 = 4278190080
    addne     r3, r3, #1, 6  ; 0x4000000 = 67108864
    moveq     r0, r0, lsl #8
    tst       r0, #0xF, 4  ; 0xF0000000 = 4026531840
    addne     r3, r3, #2, 8  ; 0x2000000 = 33554432
    moveq     r0, r0, lsl #4
    tst       r0, #3, 2  ; 0xC0000000 = 3221225472
    addne     r3, r3, #1, 8  ; 0x1000000 = 16777216
    moveqs    r0, r0, lsl #2
    addmi     r3, r3, #2, 10  ; 0x800000 = 8388608
    movpl     r0, r0, lsl #1
    movs      r1, r0, lsl #24
    orrne     r2, r2, #0x10  ; 0x10 = 16
    movs      r1, r0, lsl #25
    adc       r0, r3, r0, asr #8
    bcc       pp214     ;  pc+8+4
    bne       pp214     ;  pc+8+0
    bic       r0, r0, #1
pp214
    tst       r2, #0x1F  ; 0x1F = 31
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    str       r0, [sp, #8]
    add       r0, sp, #0x10  ; 0x10 = 16
    mov       r1, r2
    mov       r2, r12
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __led
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x20  ; 0x20 = 32
    orrs      r12, r1, r3
    bmi       pp216     ;  pc+8+72
    cmn       r12, #1, 12  ; 0x100000 = 1048576
    bmi       pp217     ;  pc+8+24
    cmp       r1, r3
    cmpeq     r0, r2
    mov       r0, #0
    movls     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp217
    cmn       r1, #1, 12  ; 0x100000 = 1048576
    cmnpl     r3, #1, 12  ; 0x100000 = 1048576
    bmi       pp218     ;  pc+8+112
pp222
    cmp       r1, r3
    cmpeq     r0, r2
    mov       r0, #0
    movls     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp216
    cmn       r12, #1, 12  ; 0x100000 = 1048576
    bpl       pp219     ;  pc+8+32
    orrs      r12, r0, r1, lsl #1
    orreqs    r12, r2, r3, lsl #1
    cmpne     r3, r1
    cmpeq     r2, r0
    mov       r0, #0
    movls     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp219
    mov       r12, #2, 12  ; 0x200000 = 2097152
    cmn       r12, r1, lsl #1
    cmncc     r12, r3, lsl #1
    bcs       pp218     ;  pc+8+24
pp223
    cmp       r3, r1
    cmpeq     r2, r0
    mov       r0, #0
    movls     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp218
    mov       r12, #2, 12  ; 0x200000 = 2097152
    cmn       r12, r1, lsl #1
    cmpeq     r0, #0
    cmnls     r12, r3, lsl #1
    cmpeq     r2, #0
    bhi       pp221     ;  pc+8+8
    orrs      r12, r1, r3
    bpl       pp222     ;  pc+8-152
    b         pp223     ;  pc+8-68
pp221
    str       r2, [sp]
    str       r3, [sp, #4]
    mov       r3, #3
    str       r3, [sp, #8]
    mov       r3, r1
    mov       r2, r0
    mov       r1, #1, 10  ; 0x400000 = 4194304
    orr       r1, r1, #1
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x20  ; 0x20 = 32
    b         pp224     ;  pc+8-4
pp224
    cmp       r0, #2
    moveq     r0, #1
    beq       pp225     ;  pc+8+8
    cmp       r0, #0
    moveq     r0, #1
    movne     r0, #0
pp225
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __les
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    orrs      r12, r0, r1
    bmi       pp226     ;  pc+8+84
    cmn       r12, #2, 10  ; 0x800000 = 8388608
    bmi       pp227     ;  pc+8+20
    cmp       r0, r1
    mov       r0, #0
    movls     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp227
    cmn       r0, #2, 10  ; 0x800000 = 8388608
    cmnpl     r1, #2, 10  ; 0x800000 = 8388608
    bmi       pp228     ;  pc+8+20
pp229
    cmp       r0, r1
    mov       r0, #0
    movls     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp228
    mov       r12, #1, 8  ; 0x1000000 = 16777216
    cmn       r12, r0, lsl #1
    cmnls     r12, r1, lsl #1
    bls       pp229     ;  pc+8-44
    b         pp230     ;  pc+8+72
pp226
    cmn       r12, #2, 10  ; 0x800000 = 8388608
    bpl       pp231     ;  pc+8+24
    movs      r12, r12, lsl #1
    cmpne     r1, r0
    mov       r0, #0
    movls     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp231
    mov       r12, #1, 8  ; 0x1000000 = 16777216
    cmn       r12, r0, lsl #1
    cmnls     r12, r1, lsl #1
    bhi       pp230     ;  pc+8+20
    cmp       r1, r0
    mov       r0, #0
    movls     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp230
    str       r1, [sp]
    mov       r3, #3
    str       r3, [sp, #8]
    mov       r2, r0
    mov       r1, #1
    orr       r1, r1, #5, 12  ; 0x500000 = 5242880
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x18  ; 0x18 = 24
    b         pp233     ;  pc+8-4
pp233
    cmp       r0, #2
    moveq     r0, #1
    beq       pp234     ;  pc+8+8
    cmp       r0, #0
    moveq     r0, #1
    movne     r0, #0
pp234
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __ltd
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x20  ; 0x20 = 32
    orrs      r12, r1, r3
    bmi       pp235     ;  pc+8+72
    cmn       r12, #1, 12  ; 0x100000 = 1048576
    bmi       pp236     ;  pc+8+24
    cmp       r1, r3
    cmpeq     r0, r2
    mov       r0, #0
    movcc     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp236
    cmn       r1, #1, 12  ; 0x100000 = 1048576
    cmnpl     r3, #1, 12  ; 0x100000 = 1048576
    bmi       pp237     ;  pc+8+112
pp241
    cmp       r1, r3
    cmpeq     r0, r2
    mov       r0, #0
    movcc     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp235
    cmn       r12, #1, 12  ; 0x100000 = 1048576
    bpl       pp238     ;  pc+8+32
    orrs      r12, r0, r1, lsl #1
    orreqs    r12, r2, r3, lsl #1
    cmpne     r3, r1
    cmpeq     r2, r0
    mov       r0, #0
    movcc     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp238
    mov       r12, #2, 12  ; 0x200000 = 2097152
    cmn       r12, r1, lsl #1
    cmncc     r12, r3, lsl #1
    bcs       pp237     ;  pc+8+24
pp242
    cmp       r3, r1
    cmpeq     r2, r0
    mov       r0, #0
    movcc     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp237
    mov       r12, #2, 12  ; 0x200000 = 2097152
    cmn       r12, r1, lsl #1
    cmpeq     r0, #0
    cmnls     r12, r3, lsl #1
    cmpeq     r2, #0
    bhi       pp240     ;  pc+8+8
    orrs      r12, r1, r3
    bpl       pp241     ;  pc+8-152
    b         pp242     ;  pc+8-68
pp240
    str       r2, [sp]
    str       r3, [sp, #4]
    mov       r3, #3
    str       r3, [sp, #8]
    mov       r3, r1
    mov       r2, r0
    mov       r1, #1, 10  ; 0x400000 = 4194304
    orr       r1, r1, #1
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x20  ; 0x20 = 32
    b         pp243     ;  pc+8-4
pp243
    cmp       r0, #2
    moveq     r0, #1
    movne     r0, #0
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __lts
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    orrs      r12, r0, r1
    bmi       pp244     ;  pc+8+84
    cmn       r12, #2, 10  ; 0x800000 = 8388608
    bmi       pp245     ;  pc+8+20
    cmp       r0, r1
    mov       r0, #0
    movcc     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp245
    cmn       r0, #2, 10  ; 0x800000 = 8388608
    cmnpl     r1, #2, 10  ; 0x800000 = 8388608
    bmi       pp246     ;  pc+8+20
pp247
    cmp       r0, r1
    mov       r0, #0
    movcc     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp246
    mov       r12, #1, 8  ; 0x1000000 = 16777216
    cmn       r12, r0, lsl #1
    cmnls     r12, r1, lsl #1
    bls       pp247     ;  pc+8-44
    b         pp248     ;  pc+8+72
pp244
    cmn       r12, #2, 10  ; 0x800000 = 8388608
    bpl       pp249     ;  pc+8+24
    movs      r12, r12, lsl #1
    cmpne     r1, r0
    mov       r0, #0
    movcc     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp249
    mov       r12, #1, 8  ; 0x1000000 = 16777216
    cmn       r12, r0, lsl #1
    cmnls     r12, r1, lsl #1
    bhi       pp248     ;  pc+8+20
    cmp       r1, r0
    mov       r0, #0
    movcc     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp248
    str       r1, [sp]
    mov       r3, #3
    str       r3, [sp, #8]
    mov       r2, r0
    mov       r1, #1
    orr       r1, r1, #5, 12  ; 0x500000 = 5242880
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x18  ; 0x18 = 24
    b         pp251     ;  pc+8-4
pp251
    cmp       r0, #2
    moveq     r0, #1
    movne     r0, #0
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __muld
    stmdb     sp!, {r4 - r9, r11, lr}  ; stmfd
    sub       sp, sp, #0x20  ; 0x20 = 32
    str       r3, [sp, #0x1C]  ; 0x1C = 28
    str       r2, [sp, #0x18]  ; 0x18 = 24
    str       r1, [sp, #0x14]  ; 0x14 = 20
    str       r0, [sp, #0x10]  ; 0x10 = 16
    mov       r5, #0
    orrs      r4, r0, r1, lsl #1
    beq       pp252     ;  pc+8+316
    mov       r4, r1, lsl #1
    mov       r4, r4, lsr #21
    add       r4, r4, #1
    cmp       r4, #2, 22  ; 0x800 = 2048
    beq       pp253     ;  pc+8+348
    orrs      r4, r2, r3, lsl #1
    beq       pp254     ;  pc+8+532
    mov       r4, r3, lsl #1
    mov       r4, r4, lsr #21
    add       r4, r4, #1
    cmp       r4, #2, 22  ; 0x800 = 2048
    beq       pp255     ;  pc+8+440
    movs      r12, r3, lsl #1
    teqeq     r2, #0
    mov       r8, r12, lsl #10
    mov       r3, r12, lsr #20
    mov       r4, r2, lsl #11
    orr       r5, r8, r2, lsr #21
    addne     r3, r3, #0x1E, 22  ; 0x7800 = 30720
    mov       r3, r3, rrx
    orrne     r5, r5, #2, 2  ; 0x80000000 = 2147483648
    movs      r12, r12, asr #21
    addeq     lr, pc, #8
    beq       __fp_norm_op2  ; 100458D4
    cmn       r12, #1
    beq       pp256     ;  pc+8+140
    movs      r12, r1, lsl #1
    teqeq     r0, #0
    mov       r8, r12, lsl #10
    mov       r1, r12, lsr #20
    mov       r2, r0, lsl #11
    orr       r0, r8, r0, lsr #21
    addne     r1, r1, #0x1E, 22  ; 0x7800 = 30720
    mov       r1, r1, rrx
    orrne     r0, r0, #2, 2  ; 0x80000000 = 2147483648
    movs      r12, r12, asr #21
    addeq     lr, pc, #8
    beq       __fp_norm_op1  ; 10045814
    cmn       r12, #1
    beq       pp257     ;  pc+8+140
    bl        __fp_mult_common  ; 10046DF0
    bl        __fp_e2d  ; 1004634C
pp272
    tst       r3, #0x1F  ; 0x1F = 31
    addeq     sp, sp, #0x20  ; 0x20 = 32
    ldmeqia   sp!, {r4 - r9, r11, lr}  ; ldmeqfd
    moveq     pc, lr
    str       r0, [sp, #8]
    str       r1, [sp, #0xC]  ; 0xC = 12
    ldr       r0, [sp, #0x18]  ; 0x18 = 24
    ldr       r1, [sp, #0x1C]  ; 0x1C = 28
    str       r0, [sp]
    str       r1, [sp, #4]
    ldr       r2, [sp, #0x10]  ; 0x10 = 16
    orr       r1, r3, #0xE, 12  ; 0xE00000 = 14680064
    ldr       r3, [sp, #0x14]  ; 0x14 = 20
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    ldr       r1, [sp, #0x14]  ; 0x14 = 20
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {r4 - r9, r11, lr}  ; ldmfd
    mov       pc, lr
pp256
    orr       r3, r3, #1, 2  ; 0x40000000 = 1073741824
    movs      r12, r1, lsl #1
    teqeq     r0, #0
    mov       r8, r12, lsl #10
    mov       r1, r12, lsr #20
    mov       r2, r0, lsl #11
    orr       r0, r8, r0, lsr #21
    addne     r1, r1, #0x1E, 22  ; 0x7800 = 30720
    mov       r1, r1, rrx
    orrne     r0, r0, #2, 2  ; 0x80000000 = 2147483648
    movs      r12, r12, asr #21
    addeq     lr, pc, #8
    beq       __fp_norm_op1  ; 10045814
    cmn       r12, #1
pp257
    orreq     r1, r1, #1, 2  ; 0x40000000 = 1073741824
    sub       lr, pc, #0x98  ; 0x98 = 152
    mov       r11, #2
    b         __fp_mult_uncommon  ; 10047078
pp252
    mov       r4, r3, lsl #1
    mov       r4, r4, lsr #21
    add       r4, r4, #1
    cmp       r4, #2, 22  ; 0x800 = 2048
    bne       pp254     ;  pc+8+220
    orrs      r4, r2, r3, lsl #12
    orreq     r5, r5, #1
    beq       pp259     ;  pc+8+164
    mov       r1, r3
    mov       r0, r2
    tst       r1, #2, 14  ; 0x80000 = 524288
    orreq     r5, r5, #1
    b         pp259     ;  pc+8+144
pp253
    orrs      r4, r0, r1, lsl #12
    beq       pp261     ;  pc+8+48
    tst       r1, #2, 14  ; 0x80000 = 524288
    orreq     r5, r5, #1
    beq       pp259     ;  pc+8+124
    mov       r4, r3, lsl #1
    mov       r4, r4, lsr #21
    add       r4, r4, #1
    cmp       r4, #2, 22  ; 0x800 = 2048
    bne       pp259     ;  pc+8+104
    orrs      r4, r2, r3, lsl #12
    beq       pp259     ;  pc+8+96
    tst       r3, #2, 14  ; 0x80000 = 524288
    orreq     r5, r5, #1
    b         pp259     ;  pc+8+84
pp261
    orrs      r4, r2, r3, lsl #1
    orreq     r5, r5, #1
    beq       pp259     ;  pc+8+72
    movs      r4, r3, lsl #1
    mov       r4, r4, lsr #21
    add       r4, r4, #1
    cmp       r4, #2, 22  ; 0x800 = 2048
    bne       pp267     ;  pc+8+68
    orrs      r4, r2, r3, lsl #12
    beq       pp267     ;  pc+8+60
    mov       r1, r3
    mov       r0, r2
    tst       r3, #2, 14  ; 0x80000 = 524288
    orreq     r5, r5, #1
    b         pp259     ;  pc+8+24
pp255
    orrs      r4, r2, r3, lsl #12
    beq       pp267     ;  pc+8+32
    mov       r1, r3
    mov       r0, r2
    tst       r3, #2, 14  ; 0x80000 = 524288
    orreq     r5, r5, #1
    b         pp259     ;  pc+8-4
pp259
    orr       r1, r1, #0x7F, 8  ; 0x7F000000 = 2130706432
    orr       r1, r1, #0x3E, 14  ; 0xF80000 = 16252928
    mov       r3, r5
    b         pp272     ;  pc+8-372
pp267
    eors      r4, r1, r3
    mov       r0, #0
    mov       r1, #0x7F, 8  ; 0x7F000000 = 2130706432
    orr       r1, r1, #0xF, 12  ; 0xF00000 = 15728640
    orrmi     r1, r1, #2, 2  ; 0x80000000 = 2147483648
    mov       r3, r5
    b         pp272     ;  pc+8-400
pp254
    eors      r4, r1, r3
    mov       r0, #0
    mov       r1, #0
    orrmi     r1, r1, #2, 2  ; 0x80000000 = 2147483648
    mov       r3, r5
    b         pp272     ;  pc+8-424
    IMPENTRY __muls
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    str       r0, [sp, #0x10]  ; 0x10 = 16
    mov       lr, #0xF, 12  ; 0xF00000 = 15728640
    str       r1, [sp, #0x14]  ; 0x14 = 20
    mov       r12, #0xFF, 16  ; 0xFF0000 = 16711680
    ands      r2, r12, r0, lsr #7
    andnes    r3, r12, r1, lsr #7
    teqne     r2, r12
    teqne     r3, r12
    beq       pp275     ;  pc+8+168
    teq       r0, r1
    orrmi     r2, r2, #1, 24  ; 0x100 = 256
    mov       r12, #2, 2  ; 0x80000000 = 2147483648
    orr       r0, r12, r0, lsl #8
    orr       r1, r12, r1, lsl #8
    add       r2, r2, r3
    umull     r12, r3, r0, r1
    sub       r2, r2, #2, 10  ; 0x800000 = 8388608
    cmp       r12, #0
    orrne     r3, r3, #1
    cmp       r3, #2, 2  ; 0x80000000 = 2147483648
    orrcs     r1, r12, r3, lsl #24
    movcc     r3, r3, lsl #1
    adc       r2, r2, r2, asr #16
    orrs      r1, r12, r3, lsl #25
    orrne     lr, lr, #0x10  ; 0x10 = 16
    movs      r0, r3, lsr #8
    adc       r0, r0, r2, lsl #23
    tstcs     r3, #0x7F  ; 0x7F = 127
    cmpne     r2, #0x3F, 14  ; 0xFC0000 = 16515072
    bcc       __fArithReturn  ; 10035E10
    biceq     r0, r0, #1
    cmp       r2, #0x3F, 14  ; 0xFC0000 = 16515072
    bcc       __fArithReturn  ; 10035E10
    bpl       fmul_fdiv_overflow  ; 10037D3C
    mov       r1, r0, lsl #1
    sub       r1, r1, #1, 8  ; 0x1000000 = 16777216
    cmp       r1, #3, 8  ; 0x3000000 = 50331648
    bcc       __fArithReturn  ; 10035E10
    mov       r0, r3
    mvn       r3, r2, lsr #8
    rsb       r2, r2, #8
    b         __flt_underflow  ; 10035D6C
    IMPENTRY fmul_fdiv_overflow
    mov       r12, r0, lsl #1
    add       r12, r12, #1, 8  ; 0x1000000 = 16777216
    cmp       r12, #0xFE, 8  ; 0xFE000000 = 4261412864
    bcs       __fArithReturn  ; 10035E10
    subs      r0, r0, r2, lsl #7
    orr       lr, lr, #0x14  ; 0x14 = 20
    mov       r0, #0x7F, 8  ; 0x7F000000 = 2130706432
    orr       r0, r0, #2, 10  ; 0x800000 = 8388608
    orrmi     r0, r0, #2, 2  ; 0x80000000 = 2147483648
    b         __fArithReturn  ; 10035E10
pp275
    and       r3, r12, r1, lsr #7
    teq       r0, r1
    orrmi     r2, r2, #1, 24  ; 0x100 = 256
    cmp       r2, r12
    cmpcc     r3, r12
    bcs       pp276     ;  pc+8+20
    movs      r12, r0, lsl #1
    movnes    r12, r1, lsl #1
    moveq     r0, r2, lsl #23
    beq       __fArithReturn  ; 10035E10
    sub       r12, pc, #0xC8  ; 0xC8 = 200
    b         __flt_normalise2  ; 10046D5C
pp276
    mov       r12, #1, 8  ; 0x1000000 = 16777216
    cmn       r12, r0, lsl #1
    cmnls     r12, r1, lsl #1
    bhi       __fArithNaNCheck  ; 10035E60
    movs      r12, r0, lsl #1
    movnes    r12, r1, lsl #1
    orrne     r2, r2, #0xFF  ; 0xFF = 255
    mov       r0, r2, lsl #23
    orreq     lr, lr, #1
    orreq     r0, r0, #0x7F, 8  ; 0x7F000000 = 2130706432
    orreq     r0, r0, #3, 10  ; 0xC00000 = 12582912
    b         __fArithReturn  ; 10035E10
    IMPENTRY __ned
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x20  ; 0x20 = 32
    orrs      r12, r1, r3
    bmi       pp277     ;  pc+8+72
    cmn       r12, #1, 12  ; 0x100000 = 1048576
    bmi       pp278     ;  pc+8+24
    cmp       r1, r3
    cmpeq     r0, r2
    mov       r0, #0
    movne     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp278
    cmn       r1, #1, 12  ; 0x100000 = 1048576
    cmnpl     r3, #1, 12  ; 0x100000 = 1048576
    bmi       pp279     ;  pc+8+112
pp283
    cmp       r1, r3
    cmpeq     r0, r2
    mov       r0, #0
    movne     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp277
    cmn       r12, #1, 12  ; 0x100000 = 1048576
    bpl       pp280     ;  pc+8+32
    orrs      r12, r0, r1, lsl #1
    orreqs    r12, r2, r3, lsl #1
    cmpne     r3, r1
    cmpeq     r2, r0
    mov       r0, #0
    movne     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp280
    mov       r12, #2, 12  ; 0x200000 = 2097152
    cmn       r12, r1, lsl #1
    cmncc     r12, r3, lsl #1
    bcs       pp279     ;  pc+8+24
pp284
    cmp       r3, r1
    cmpeq     r2, r0
    mov       r0, #0
    movne     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp279
    mov       r12, #2, 12  ; 0x200000 = 2097152
    cmn       r12, r1, lsl #1
    cmpeq     r0, #0
    cmnls     r12, r3, lsl #1
    cmpeq     r2, #0
    bhi       pp282     ;  pc+8+8
    orrs      r12, r1, r3
    bpl       pp283     ;  pc+8-152
    b         pp284     ;  pc+8-68
pp282
    mov       r12, #0x7F, 28  ; 0x7F0 = 2032
    orr       r12, r12, #0xF  ; 0xF = 15
    mov       lr, r1, lsl #1
    mov       lr, lr, lsr #21
    cmp       lr, r12
    bne       pp285     ;  pc+8+16
    mov       lr, r1, lsl #14
    orrs      lr, lr, r0
    beq       pp285     ;  pc+8+4
    tst       r1, #2, 14  ; 0x80000 = 524288
    beq       pp287     ;  pc+8+40
pp285
    mov       lr, r3, lsl #1
    mov       lr, lr, lsr #21
    cmp       lr, r12
    bne       pp288     ;  pc+8+16
    mov       lr, r3, lsl #12
    orrs      lr, lr, r2
    beq       pp288     ;  pc+8+4
    tst       r3, #2, 14  ; 0x80000 = 524288
    beq       pp287     ;  pc+8+4
pp288
    mov       r0, #3
    b         pp291     ;  pc+8+44
pp287
    str       r2, [sp]
    str       r3, [sp, #4]
    mov       r3, #3
    str       r3, [sp, #8]
    mov       r3, r1
    mov       r2, r0
    mov       r1, #1, 10  ; 0x400000 = 4194304
    orr       r1, r1, #1
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    b         pp291     ;  pc+8-4
pp291
    cmp       r0, #0
    moveq     r0, #0
    movne     r0, #1
    add       sp, sp, #0x20  ; 0x20 = 32
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __negd
    mvn       r2, r1
    eor       r3, r2, r1
    bic       r3, r3, #2, 2  ; 0x80000000 = 2147483648
    eor       r1, r3, r2
    mov       pc, lr
    IMPENTRY __negs
    mvn       r1, r0
    eor       r3, r1, r0
    bic       r3, r3, #2, 2  ; 0x80000000 = 2147483648
    eor       r0, r3, r1
    mov       pc, lr
    IMPENTRY __nes
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    orrs      r12, r0, r1
    bmi       pp293     ;  pc+8+84
    cmn       r12, #2, 10  ; 0x800000 = 8388608
    bmi       pp294     ;  pc+8+20
    cmp       r0, r1
    mov       r0, #0
    movne     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp294
    cmn       r0, #2, 10  ; 0x800000 = 8388608
    cmnpl     r1, #2, 10  ; 0x800000 = 8388608
    bmi       pp295     ;  pc+8+20
pp296
    cmp       r0, r1
    mov       r0, #0
    movne     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp295
    mov       r12, #1, 8  ; 0x1000000 = 16777216
    cmn       r12, r0, lsl #1
    cmnls     r12, r1, lsl #1
    bls       pp296     ;  pc+8-44
    b         pp297     ;  pc+8+72
pp293
    cmn       r12, #2, 10  ; 0x800000 = 8388608
    bpl       pp298     ;  pc+8+24
    movs      r12, r12, lsl #1
    cmpne     r1, r0
    mov       r0, #0
    movne     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp298
    mov       r12, #1, 8  ; 0x1000000 = 16777216
    cmn       r12, r0, lsl #1
    cmnls     r12, r1, lsl #1
    bhi       pp297     ;  pc+8+20
    cmp       r1, r0
    mov       r0, #0
    movne     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp297
    mov       lr, r0, lsl #1
    mov       lr, lr, lsr #24
    cmp       lr, #0xFF  ; 0xFF = 255
    bne       pp300     ;  pc+8+12
    movs      lr, r0, lsl #9
    beq       pp300     ;  pc+8+4
    tst       r0, #1, 10  ; 0x400000 = 4194304
    beq       pp302     ;  pc+8+36
pp300
    mov       lr, r1, lsl #1
    mov       lr, lr, lsr #24
    cmp       lr, #0xFF  ; 0xFF = 255
    bne       pp303     ;  pc+8+12
    movs      lr, r1, lsl #9
    beq       pp303     ;  pc+8+4
    tst       r1, #1, 10  ; 0x400000 = 4194304
    beq       pp302     ;  pc+8+4
pp303
    mov       r0, #3
    b         pp306     ;  pc+8+36
pp302
    str       r1, [sp]
    mov       r3, #3
    str       r3, [sp, #8]
    mov       r2, r0
    mov       r1, #1
    orr       r1, r1, #5, 12  ; 0x500000 = 5242880
    add       r0, sp, #0x10  ; 0x10 = 16
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    b         pp306     ;  pc+8-4
pp306
    cmp       r0, #0
    moveq     r0, #0
    movne     r0, #1
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    ;=============================================================
    ;=============================================================
    IF 0            ; define __div in div.asm
    IMPENTRY __rt_sdiv
    ands      r3, r0, #2, 2  ; 0x80000000 = 2147483648
    rsbmi     r0, r0, #0
    eors      r12, r3, r1, asr #32
    rsbcs     r1, r1, #0
    movs      r2, r0
    beq       pp308     ;  pc+8+192
pp309
    cmp       r2, r1, lsr #8
    movls     r2, r2, lsl #8
    bcc       pp309     ;  pc+8-16
    cmp       r2, r1, lsr #1
    bhi       pp310     ;  pc+8+132
    cmp       r2, r1, lsr #2
    bhi       pp311     ;  pc+8+116
    cmp       r2, r1, lsr #3
    bhi       pp312     ;  pc+8+96
    cmp       r2, r1, lsr #4
    bhi       pp313     ;  pc+8+76
    cmp       r2, r1, lsr #5
    bhi       pp314     ;  pc+8+56
    cmp       r2, r1, lsr #6
    bhi       pp315     ;  pc+8+36
    cmp       r2, r1, lsr #7
    bhi       pp316     ;  pc+8+16
pp317
    movhi     r2, r2, lsr #8
    cmp       r1, r2, lsl #7
    adc       r3, r3, r3
    subcs     r1, r1, r2, lsl #7
    cmp       r1, r2, lsl #6
pp316
    adc       r3, r3, r3
    subcs     r1, r1, r2, lsl #6
    cmp       r1, r2, lsl #5
pp315
    adc       r3, r3, r3
    subcs     r1, r1, r2, lsl #5
    cmp       r1, r2, lsl #4
pp314
    adc       r3, r3, r3
    subcs     r1, r1, r2, lsl #4
    cmp       r1, r2, lsl #3
pp313
    adc       r3, r3, r3
    subcs     r1, r1, r2, lsl #3
    cmp       r1, r2, lsl #2
pp312
    adc       r3, r3, r3
    subcs     r1, r1, r2, lsl #2
    cmp       r1, r2, lsl #1
pp311
    adc       r3, r3, r3
    subcs     r1, r1, r2, lsl #1
pp310
    cmp       r1, r2
    adc       r3, r3, r3
    subcs     r1, r1, r2
    cmp       r2, r0
    bne       pp317     ;  pc+8-112
    mov       r0, r3
    movs      r12, r12, lsl #1
    rsbcs     r0, r0, #0
    rsbmi     r1, r1, #0
    mov       pc, lr
pp308
    ldr       r12, [pc, #0x10]  ;  pc+8+16 = 10038194
    ldr       r0, [pc, #0x10]  ;  pc+8+16 = 10038198
    mov       r1, #0
    mov       r2, #0
    mov       r3, #0
    mov       pc, r12
    DCD       0x10047194  ;__rt_div0
    DCD       0xC0000094
    IMPENTRY __rt_sdiv10
    movs      r3, r0
    rsbmi     r0, r0, #0
    sub       r1, r0, #0xA  ; 0xA = 10
    sub       r0, r0, r0, lsr #2
    add       r0, r0, r0, lsr #4
    add       r0, r0, r0, lsr #8
    add       r0, r0, r0, lsr #16
    mov       r0, r0, lsr #3
    add       r2, r0, r0, lsl #2
    subs      r1, r1, r2, lsl #1
    addpl     r0, r0, #1
    addmi     r1, r1, #0xA  ; 0xA = 10
    movs      r3, r3
    rsbmi     r0, r0, #0
    rsbmi     r1, r1, #0
    mov       pc, lr
    IMPENTRY __rt_udiv64by64
    stmdb     sp!, {r4 - r8, r11, lr}  ; stmfd
    mov       r7, #0
    mov       r8, #0
    mov       r4, #1
    mov       lr, #0
    orrs      r11, r2, r3
    bne       pp318     ;  pc+8+44
    mov       r0, #3, 2  ; 0xC0000000 = 3221225472
    ldr       r11, [pc, #0x20]  ;  pc+8+32 = 10038224
    mov       r3, #0
    mov       r2, #0
    mov       r1, #0
    orr       r0, r0, #0x94  ; 0x94 = 148
    mov       lr, pc
    mov       pc, r11
    mvn       r0, #0
    mvn       r1, #0
    b         pp319     ;  pc+8+180
    DCD       __fp_error ;0xF000FE38  ; syscall may cause error
pp318
    cmp       r3, r1
    bhi       pp320     ;  pc+8+128
    bcc       pp321     ;  pc+8+4
    cmp       r2, r0
    bhi       pp322     ;  pc+8+80
pp321
    and       r5, r2, #0
    and       r6, r3, #2, 2  ; 0x80000000 = 2147483648
    orrs      r11, r5, r6
    bne       pp323     ;  pc+8+44
    mov       r3, r3, lsl #1
    mov       lr, lr, lsl #1
    orr       r3, r3, r2, lsr #31
    orr       lr, lr, r4, lsr #31
    mov       r4, r4, lsl #1
    mov       r2, r2, lsl #1
    cmp       r3, r1
    bcc       pp321     ;  pc+8-52
    bhi       pp325     ;  pc+8+88
    cmp       r2, r0
    bls       pp321     ;  pc+8-64
    b         pp325     ;  pc+8+76
pp323
    subs      r0, r0, r2
    sbc       r1, r1, r3
    mov       r7, r4
    mov       r8, lr
    b         pp325     ;  pc+8+56
pp322
    cmp       r3, r1
    bhi       pp320     ;  pc+8+24
    bcc       pp330     ;  pc+8+4
    cmp       r2, r0
    bhi       pp320     ;  pc+8+12
pp330
    adds      r7, r4, r7
    adc       r8, lr, r8
    subs      r0, r0, r2
    sbc       r1, r1, r3
pp320
    mov       r2, r2, lsr #1
    mov       r11, r4, lsr #1
    orr       r2, r2, r3, lsl #31
    orr       r4, r11, lr, lsl #31
    mov       r3, r3, lsr #1
    mov       lr, lr, lsr #1
pp325
    orrs      r11, r4, lr
    bne       pp322     ;  pc+8-72
    mov       r0, r7
    mov       r1, r8
pp319
    ldmia     sp!, {r4 - r8, r11, lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __rt_sdiv64by64
    stmdb     sp!, {r11, lr}  ; stmfd
    mov       lr, #0
    orrs      r11, r2, r3
    bne       pp333     ;  pc+8+44
    mov       r0, #3, 2  ; 0xC0000000 = 3221225472
    ldr       r11, [pc, #0x20]  ;  pc+8+32 = 10038320
    mov       r3, #0
    mov       r2, #0
    mov       r1, #0
    orr       r0, r0, #0x94  ; 0x94 = 148
    mov       lr, pc
    mov       pc, r11
    mvn       r0, #0
    mvn       r1, #0
    b         pp334     ;  pc+8+100
    DCD       __fp_error ;0xF000FE38  ; syscall may cause error
pp333
    cmp       r1, #0
    bgt       pp335     ;  pc+8+20
    blt       pp336     ;  pc+8+4
    cmp       r0, #0
    bcs       pp335     ;  pc+8+8
pp336
    rsbs      r0, r0, #0
    mov       lr, #1
    rsc       r1, r1, #0
pp335
    cmp       r3, #0
    bgt       pp338     ;  pc+8+28
    blt       pp339     ;  pc+8+4
    cmp       r2, #0
    bcs       pp338     ;  pc+8+16
pp339
    cmp       lr, #0
    mov       lr, #1
    movne     lr, #0
    rsbs      r2, r2, #0
    rsc       r3, r3, #0
pp338
    cmp       lr, #0
    beq       pp341     ;  pc+8+12
    bl        __rt_udiv64by64  ; 100381DC
    rsbs      r0, r0, #0
    rsc       r1, r1, #0
    b         pp334     ;  pc+8+0
pp341
    bl        __rt_udiv64by64  ; 100381DC
pp334
    ldmia     sp!, {r11, lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __rt_urem64by64
    stmdb     sp!, {r4 - r7, r11, lr}  ; stmfd
    mov       r4, r0
    mov       r5, r1
    mov       r7, r3
    orrs      r3, r4, r5
    mov       r6, r2
    moveq     r0, #0
    moveq     r1, #0
    beq       pp343     ;  pc+8+116
    orrs      r3, r6, r7
    bne       pp344     ;  pc+8+44
    mov       r0, #3, 2  ; 0xC0000000 = 3221225472
    ldr       r11, [pc, #0x20]  ;  pc+8+32 = 100383E8
    mov       r3, #0
    mov       r2, #0
    mov       r1, #0
    orr       r0, r0, #0x94  ; 0x94 = 148
    mov       lr, pc
    mov       pc, r11
    mvn       r0, #0
    mvn       r1, #0
    b         pp343     ;  pc+8+64
    DCD       __fp_error ; 0xF000FE38  ; syscall may cause error
pp344
    mov       r0, r4
    mov       r1, r5
    mov       r2, r6
    mov       r3, r7
    bl        __rt_udiv64by64  ; 100381DC
    mov       r3, r1
    mov       r2, r0
    mov       r1, r6
    mul       lr, r2, r7
    mul       r2, r3, r1
    add       r3, lr, r2
    umull     lr, r2, r0, r1
    mul       r1, r0, r1
    add       r3, r3, r2
    subs      r0, r4, r1
    sbc       r1, r5, r3
pp343
    ldmia     sp!, {r4 - r7, r11, lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __rt_srem64by64
    stmdb     sp!, {r4 - r7, r11, lr}  ; stmfd
    mov       r4, r0
    mov       r5, r1
    mov       r7, r3
    orrs      r3, r4, r5
    mov       r6, r2
    moveq     r0, #0
    moveq     r1, #0
    beq       pp346     ;  pc+8+116
    orrs      r3, r6, r7
    bne       pp347     ;  pc+8+44
    mov       r0, #3, 2  ; 0xC0000000 = 3221225472
    ldr       r11, [pc, #0x20]  ;  pc+8+32 = 1003848C
    mov       r3, #0
    mov       r2, #0
    mov       r1, #0
    orr       r0, r0, #0x94  ; 0x94 = 148
    mov       lr, pc
    mov       pc, r11
    mvn       r0, #0
    mvn       r1, #0
    b         pp346     ;  pc+8+64
    DCD       __fp_error ; 0xF000FE38  ; syscall may cause error
pp347
    mov       r0, r4
    mov       r1, r5
    mov       r2, r6
    mov       r3, r7
    bl        __rt_sdiv64by64  ; 100382E4
    mov       r3, r1
    mov       r2, r0
    mov       r1, r6
    mul       lr, r2, r7
    mul       r2, r3, r1
    add       r3, lr, r2
    umull     lr, r2, r0, r1
    mul       r1, r0, r1
    add       r3, r3, r2
    subs      r0, r4, r1
    sbc       r1, r5, r3
pp346
    ldmia     sp!, {r4 - r7, r11, lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __rt_srsh
    cmp       r2, #0
    moveq     pc, lr
    cmp       r2, #0x20  ; 0x20 = 32
    blt       pp349     ;  pc+8+32
    cmp       r2, #0x40  ; 0x40 = 64
    blt       pp350     ;  pc+8+8
    mov       r1, r1, asr #32
    mov       r0, r1
    mov       pc, lr
pp350
    and       r2, r2, #0x1F  ; 0x1F = 31
    mov       r0, r1, asr r2
    mov       r1, r1, asr #32
    mov       pc, lr
pp349
    mov       r0, r0, lsr r2
    rsb       r3, r2, #0x20  ; 0x20 = 32
    orr       r0, r0, r1, lsl r3
    mov       r1, r1, asr r2
    mov       pc, lr
    IMPENTRY __rt_udiv
    mov       r3, #0
    movs      r2, r0
    beq       pp351     ;  pc+8+180
pp352
    cmp       r2, r1, lsr #8
    movls     r2, r2, lsl #8
    bcc       pp352     ;  pc+8-16
    cmp       r2, r1, lsr #1
    bhi       pp353     ;  pc+8+132
    cmp       r2, r1, lsr #2
    bhi       pp354     ;  pc+8+116
    cmp       r2, r1, lsr #3
    bhi       pp355     ;  pc+8+96
    cmp       r2, r1, lsr #4
    bhi       pp356     ;  pc+8+76
    cmp       r2, r1, lsr #5
    bhi       pp357     ;  pc+8+56
    cmp       r2, r1, lsr #6
    bhi       pp358     ;  pc+8+36
    cmp       r2, r1, lsr #7
    bhi       pp359     ;  pc+8+16
pp360
    movhi     r2, r2, lsr #8
    cmp       r1, r2, lsl #7
    adc       r3, r3, r3
    subcs     r1, r1, r2, lsl #7
    cmp       r1, r2, lsl #6
pp359
    adc       r3, r3, r3
    subcs     r1, r1, r2, lsl #6
    cmp       r1, r2, lsl #5
pp358
    adc       r3, r3, r3
    subcs     r1, r1, r2, lsl #5
    cmp       r1, r2, lsl #4
pp357
    adc       r3, r3, r3
    subcs     r1, r1, r2, lsl #4
    cmp       r1, r2, lsl #3
pp356
    adc       r3, r3, r3
    subcs     r1, r1, r2, lsl #3
    cmp       r1, r2, lsl #2
pp355
    adc       r3, r3, r3
    subcs     r1, r1, r2, lsl #2
    cmp       r1, r2, lsl #1
pp354
    adc       r3, r3, r3
    subcs     r1, r1, r2, lsl #1
pp353
    cmp       r1, r2
    adc       r3, r3, r3
    subcs     r1, r1, r2
    cmp       r2, r0
    bne       pp360     ;  pc+8-112
    mov       r0, r3
    mov       pc, lr
pp351
    ldr       r12, [pc, #0x10]  ;  pc+8+16 = 100385FC
    ldr       r0, [pc, #0x10]  ;  pc+8+16 = 10038600
    mov       r1, #0
    mov       r2, #0
    mov       r3, #0
    mov       pc, r12
    DCD       0x10047194  ;__rt_div0
    DCD       0xC0000094
    IMPENTRY __rt_udiv10
    DCD       0x9003F9D5  ; bug?
    sub       r1, r0, #0xA  ; 0xA = 10
    sub       r0, r0, r0, lsr #2
    add       r0, r0, r0, lsr #4
    add       r0, r0, r0, lsr #8
    add       r0, r0, r0, lsr #16
    mov       r0, r0, lsr #3
    add       r2, r0, r0, lsl #2
    subs      r1, r1, r2, lsl #1
    addpl     r0, r0, #1
    addmi     r1, r1, #0xA  ; 0xA = 10
    mov       pc, lr
    IMPENTRY __rt_ursh
    cmp       r2, #0
    moveq     pc, lr
    cmp       r2, #0x20  ; 0x20 = 32
    blt       pp361     ;  pc+8+32
    cmp       r2, #0x40  ; 0x40 = 64
    blt       pp362     ;  pc+8+8
    mov       r1, r1, lsr #32
    mov       r0, r1
    mov       pc, lr
pp362
    and       r2, r2, #0x1F  ; 0x1F = 31
    mov       r0, r1, lsr r2
    mov       r1, #0
    mov       pc, lr
pp361
    mov       r0, r0, lsr r2
    rsb       r3, r2, #0x20  ; 0x20 = 32
    orr       r0, r0, r1, lsl r3
    mov       r1, r1, lsr r2
    mov       pc, lr
    ENDIF
    ;===========================================================
    ;===========================================================
    IMPENTRY __stod
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    str       r0, [sp, #0x14]  ; 0x14 = 20
    add       r12, r0, #2, 10  ; 0x800000 = 8388608
    tst       r12, #0x7F, 8  ; 0x7F000000 = 2130706432
    beq       pp363     ;  pc+8+40
    mov       r12, r0
    mov       r0, r12, lsl #29
    movs      r1, r12, asr #3
    add       r1, r1, #0xE, 6  ; 0x38000000 = 939524096
    addpl     sp, sp, #0x18  ; 0x18 = 24
    ldmplia   sp!, {lr}  ; ldmplfd
    movpl     pc, lr
    sub       r1, r1, #7, 4  ; 0x70000000 = 1879048192
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp363
    tst       r12, #2, 10  ; 0x800000 = 8388608
    mov       r12, r0
    beq       pp364     ;  pc+8+108
    movs      r0, r12, lsl #1
    moveq     r1, r12
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    and       r3, r12, #2, 2  ; 0x80000000 = 2147483648
    add       r1, r3, #0xE, 6  ; 0x38000000 = 939524096
    mov       r0, r12, lsl #9
    movs      r2, r0, lsr #16
    subeq     r1, r1, #1, 8  ; 0x1000000 = 16777216
    moveq     r0, r0, lsl #16
    tst       r0, #0xFF, 8  ; 0xFF000000 = 4278190080
    subeq     r1, r1, #2, 10  ; 0x800000 = 8388608
    moveq     r0, r0, lsl #8
    tst       r0, #0xF, 4  ; 0xF0000000 = 4026531840
    subeq     r1, r1, #1, 10  ; 0x400000 = 4194304
    moveq     r0, r0, lsl #4
    tst       r0, #3, 2  ; 0xC0000000 = 3221225472
    subeq     r1, r1, #2, 12  ; 0x200000 = 2097152
    moveqs    r0, r0, lsl #2
    movpl     r0, r0, lsl #1
    subpl     r1, r1, #1, 12  ; 0x100000 = 1048576
    mov       r0, r0, lsl #1
    orr       r1, r1, r0, lsr #12
    mov       r0, r0, lsl #20
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp364
    movs      r0, r12, lsl #9
    orreq     r1, r12, #7, 12  ; 0x700000 = 7340032
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    bpl       pp365     ;  pc+8+20
    mov       r1, r12, asr #3
    mov       r0, r12, lsl #29
    orr       r1, r1, #7, 4  ; 0x70000000 = 1879048192
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp365
    ldr       r2, [sp, #0x14]  ; 0x14 = 20
    mov       r1, r12, asr #3
    mov       r0, r12, lsl #29
    orr       r1, r1, #7, 4  ; 0x70000000 = 1879048192
    orr       r1, r1, #2, 14  ; 0x80000 = 524288
    str       r1, [sp, #0xC]  ; 0xC = 12
    str       r0, [sp, #8]
    add       r0, sp, #0x10  ; 0x10 = 16
    mov       r1, #1, 8  ; 0x1000000 = 16777216
    orr       r1, r1, #1
    bl        FPE_Raise  ; 10045994
    ldr       r1, [sp, #0x14]  ; 0x14 = 20
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __stoi
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    movs      r12, r0
    mov       r3, #0x11, 12  ; 0x1100000 = 17825792
    movs      r2, r0, asr #23
    mov       r0, r0, lsl #8
    orr       r0, r0, #2, 2  ; 0x80000000 = 2147483648
    bmi       pp366     ;  pc+8+64
    rsbs      r2, r2, #0x9E  ; 0x9E = 158
    ble       pp367     ;  pc+8+24
    cmp       r2, #0x20  ; 0x20 = 32
    bge       pp368     ;  pc+8+32
    rsb       r1, r2, #0x20  ; 0x20 = 32
    movs      r1, r0, lsl r1
    orrne     r3, r3, #0x10  ; 0x10 = 16
    mov       r0, r0, lsr r2
    b         pp369     ;  pc+8+108
pp367
    orr       r3, r3, #1
    rsb       r2, r2, #0
    mov       r0, r0, lsl r2
    b         pp369     ;  pc+8+92
pp368
    mov       r0, #0
    movs      r1, r12, lsl #1
    orrne     r3, r3, #0x10  ; 0x10 = 16
    b         pp369     ;  pc+8+76
pp366
    and       r2, r2, #0xFF  ; 0xFF = 255
    rsbs      r2, r2, #0x9E  ; 0x9E = 158
    blt       pp372     ;  pc+8+32
    beq       pp373     ;  pc+8+48
    cmp       r2, #0x20  ; 0x20 = 32
    bge       pp368     ;  pc+8-44
    rsb       r1, r2, #0x20  ; 0x20 = 32
    movs      r1, r0, lsl r1
    orrne     r3, r3, #0x10  ; 0x10 = 16
    mov       r0, r0, lsr r2
    rsb       r0, r0, #0
    b         pp369     ;  pc+8+28
pp372
    orr       r3, r3, #1
    rsb       r2, r2, #0
    mov       r0, r0, lsl r2
    rsb       r0, r0, #0
    b         pp369     ;  pc+8+8
pp373
    teq       r0, #2, 2  ; 0x80000000 = 2147483648
    rsb       r0, r0, #0
    orrne     r3, r3, #1
pp369
    tst       r3, #0x1F  ; 0x1F = 31
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    str       r0, [sp, #8]
    add       r0, sp, #0x10  ; 0x10 = 16
    mov       r1, r3
    mov       r2, r12
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __stoi64
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    movs      r12, r0
    movs      r2, r0, asr #23
    mov       r0, r0, lsl #8
    orr       r1, r0, #2, 2  ; 0x80000000 = 2147483648
    mov       r0, #0
    bmi       pp377     ;  pc+8+104
    rsbs      r2, r2, #0xBE  ; 0xBE = 190
    ble       pp378     ;  pc+8+56
    cmp       r2, #0x40  ; 0x40 = 64
    bge       pp379     ;  pc+8+64
    cmp       r2, #0x20  ; 0x20 = 32
    subge     r2, r2, #0x20  ; 0x20 = 32
    movge     r0, r1
    movge     r1, #0
    rsb       r2, r2, #0x20  ; 0x20 = 32
    movs      r3, r0, lsl r2
    rsb       r3, r2, #0x20  ; 0x20 = 32
    mov       r0, r0, lsr r3
    orr       r0, r0, r1, lsl r2
    mov       r1, r1, lsr r3
    movne     r3, #0x10  ; 0x10 = 16
    moveq     r3, #0
    b         pp380     ;  pc+8+164
pp378
    rsb       r2, r2, #0
    mov       r3, #1
    mov       r1, r1, lsl r2
    b         pp380     ;  pc+8+148
pp379
    mov       r0, #0
    mov       r1, #0
    movs      r2, r12, lsl #1
    movne     r3, #0x10  ; 0x10 = 16
    moveq     r3, #0
    b         pp380     ;  pc+8+124
pp377
    and       r2, r2, #0xFF  ; 0xFF = 255
    rsbs      r2, r2, #0xBE  ; 0xBE = 190
    blt       pp383     ;  pc+8+68
    beq       pp384     ;  pc+8+88
    cmp       r2, #0x40  ; 0x40 = 64
    bge       pp379     ;  pc+8-52
    cmp       r2, #0x20  ; 0x20 = 32
    subge     r2, r2, #0x20  ; 0x20 = 32
    movge     r0, r1
    movge     r1, #0
    rsb       r2, r2, #0x20  ; 0x20 = 32
    movs      r3, r0, lsl r2
    rsb       r3, r2, #0x20  ; 0x20 = 32
    mov       r0, r0, lsr r3
    orr       r0, r0, r1, lsl r2
    mov       r1, r1, lsr r3
    movne     r3, #0x10  ; 0x10 = 16
    moveq     r3, #0
    rsbs      r0, r0, #0
    rsc       r1, r1, #0
    b         pp380     ;  pc+8+40
pp383
    rsb       r2, r2, #0
    mov       r3, #1
    mov       r1, r1, lsl r2
    rsbs      r0, r0, #0
    rsc       r1, r1, #0
    b         pp380     ;  pc+8+16
pp384
    teq       r1, #2, 2  ; 0x80000000 = 2147483648
    movne     r3, #1
    moveq     r3, #0
    rsbs      r0, r0, #0
    rsc       r1, r1, #0
pp380
    tst       r3, #0x1F  ; 0x1F = 31
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    str       r0, [sp, #8]
    str       r1, [sp, #0xC]  ; 0xC = 12
    add       r0, sp, #0x10  ; 0x10 = 16
    orr       r1, r3, #0x12, 12  ; 0x1200000 = 18874368
    mov       r2, r12
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    ldr       r1, [sp, #0x14]  ; 0x14 = 20
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __stou
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    movs      r12, r0
    mov       r3, #0x13, 12  ; 0x1300000 = 19922944
    movs      r2, r0, asr #23
    mov       r0, r0, lsl #8
    orr       r0, r0, #2, 2  ; 0x80000000 = 2147483648
    bmi       pp388     ;  pc+8+68
    rsbs      r2, r2, #0x9E  ; 0x9E = 158
    blt       pp389     ;  pc+8+24
    cmp       r2, #0x20  ; 0x20 = 32
    bge       pp390     ;  pc+8+32
    rsb       r1, r2, #0x20  ; 0x20 = 32
    movs      r1, r0, lsl r1
    orrne     r3, r3, #0x10  ; 0x10 = 16
    mov       r0, r0, lsr r2
    b         pp391     ;  pc+8+84
pp389
    orr       r3, r3, #1
    rsb       r2, r2, #0
    mov       r0, r0, lsl r2
    b         pp391     ;  pc+8+68
pp390
    bic       r3, r3, #1
    mov       r0, #0
    movs      r1, r12, lsl #1
    orrne     r3, r3, #0x10  ; 0x10 = 16
    b         pp391     ;  pc+8+48
pp388
    orr       r3, r3, #1
    and       r2, r2, #0xFF  ; 0xFF = 255
    rsbs      r2, r2, #0x9E  ; 0x9E = 158
    blt       pp394     ;  pc+8+16
    cmp       r2, #0x20  ; 0x20 = 32
    bge       pp390     ;  pc+8-48
    mov       r0, r0, lsr r2
    rsb       r0, r0, #0
    b         pp391     ;  pc+8+12
pp394
    rsb       r2, r2, #0
    mov       r0, r0, lsl r2
    rsb       r0, r0, #0
    b         pp391     ;  pc+8-4
pp391
    tst       r3, #0x1F  ; 0x1F = 31
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    str       r0, [sp, #8]
    add       r0, sp, #0x10  ; 0x10 = 16
    mov       r1, r3
    mov       r2, r12
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __stou64
    stmdb     sp!, {lr}  ; stmfd
    sub       sp, sp, #0x18  ; 0x18 = 24
    movs      r12, r0
    movs      r2, r0, asr #23
    mov       r0, r0, lsl #8
    orr       r1, r0, #2, 2  ; 0x80000000 = 2147483648
    mov       r0, #0
    bmi       pp398     ;  pc+8+104
    rsbs      r2, r2, #0xBE  ; 0xBE = 190
    blt       pp399     ;  pc+8+56
    cmp       r2, #0x40  ; 0x40 = 64
    bge       pp400     ;  pc+8+64
    cmp       r2, #0x20  ; 0x20 = 32
    subge     r2, r2, #0x20  ; 0x20 = 32
    movge     r0, r1
    movge     r1, #0
    rsb       r2, r2, #0x20  ; 0x20 = 32
    movs      r3, r0, lsl r2
    rsb       r3, r2, #0x20  ; 0x20 = 32
    mov       r0, r0, lsr r3
    orr       r0, r0, r1, lsl r2
    mov       r1, r1, lsr r3
    movne     r3, #0x10  ; 0x10 = 16
    moveq     r3, #0
    b         pp401     ;  pc+8+132
pp399
    rsb       r2, r2, #0
    mov       r3, #1
    mov       r1, r1, lsl r2
    b         pp401     ;  pc+8+116
pp400
    mov       r0, #0
    mov       r1, #0
    movs      r2, r12, lsl #1
    movne     r3, #0x10  ; 0x10 = 16
    moveq     r3, #0
    b         pp401     ;  pc+8+92
pp398
    and       r2, r2, #0xFF  ; 0xFF = 255
    rsbs      r2, r2, #0xBE  ; 0xBE = 190
    ble       pp404     ;  pc+8+56
    cmp       r2, #0x40  ; 0x40 = 64
    bge       pp400     ;  pc+8-48
    cmp       r2, #0x20  ; 0x20 = 32
    subge     r2, r2, #0x20  ; 0x20 = 32
    movge     r0, r1
    movge     r1, #0
    rsb       r2, r2, #0x20  ; 0x20 = 32
    rsb       r3, r2, #0x20  ; 0x20 = 32
    mov       r0, r0, lsr r3
    orr       r0, r0, r1, lsl r2
    mov       r1, r1, lsr r3
    rsbs      r0, r0, #0
    rsc       r1, r1, #0
    mov       r3, #1
    b         pp401     ;  pc+8+20
pp404
    mov       r3, #1
    rsb       r2, r2, #0
    mov       r1, r1, lsl r2
    rsbs      r0, r0, #0
    rsc       r1, r1, #0
    b         pp401     ;  pc+8-4
pp401
    tst       r3, #0x1F  ; 0x1F = 31
    addeq     sp, sp, #0x18  ; 0x18 = 24
    ldmeqia   sp!, {lr}  ; ldmeqfd
    moveq     pc, lr
    str       r0, [sp, #8]
    str       r1, [sp, #0xC]  ; 0xC = 12
    add       r0, sp, #0x10  ; 0x10 = 16
    orr       r1, r3, #5, 10  ; 0x1400000 = 20971520
    mov       r2, r12
    bl        FPE_Raise  ; 10045994
    ldr       r0, [sp, #0x10]  ; 0x10 = 16
    ldr       r1, [sp, #0x14]  ; 0x14 = 20
    add       sp, sp, #0x18  ; 0x18 = 24
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    ;---------------------------------------------------
    ;---------------------------------------------------
    ;---------------------------------------------------
    IMPENTRY __fp_addsub_common
    stmdb     sp!, {lr}  ; stmfd
    mov       r6, r1, lsl #17
    subs      r8, r6, r3, lsl #17
    eor       lr, r1, r3
    and       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    mov       r3, r6, lsr #17
    bhi       pp408     ;  pc+8+104
    moveq     r9, r8
    beq       pp409     ;  pc+8+184
    rsb       r6, r8, #0
    mov       r6, r6, lsr #17
    add       r3, r3, r6
    mov       r9, r6, lsr #5
    bic       r6, r6, r9, lsl #5
    cmp       r9, #2
    teqcc     r9, #0
    rsb       r9, r6, #0x20  ; 0x20 = 32
    mov       r8, r2, lsl r9
    mov       r2, r2, lsr r6
    orr       r2, r2, r0, lsl r9
    mov       r0, r0, lsr r6
    beq       pp410     ;  pc+8+12
    orrne     r8, r8, r8, lsl #2
    orrne     r8, r2, r8, lsr #2
    movne     r2, r0
    movne     r0, #0
pp410
    bcc       pp411     ;  pc+8+16
    orrcs     r8, r8, r2
    orrcs     r8, r8, r8, lsl #2
    orrcs     r8, r0, r8, lsr #2
    movcs     r2, #0
    movcs     r0, #0
pp411
    mov       r9, #0
    b         pp409     ;  pc+8+84
pp408
    mov       r6, r8, lsr #17
    mov       r8, r6, lsr #5
    bic       r6, r6, r8, lsl #5
    cmp       r8, #2
    teqcc     r8, #0
    rsb       r8, r6, #0x20  ; 0x20 = 32
    mov       r9, r4, lsl r8
    mov       r4, r4, lsr r6
    orr       r4, r4, r5, lsl r8
    mov       r5, r5, lsr r6
    beq       pp413     ;  pc+8+12
    orrne     r9, r9, r9, lsl #2
    orrne     r9, r4, r9, lsr #2
    movne     r4, r5
    movne     r5, #0
pp413
    bcc       pp414     ;  pc+8+16
    orrcs     r9, r9, r4
    orrcs     r9, r9, r9, lsl #2
    orrcs     r9, r5, r9, lsr #2
    movcs     r4, #0
    movcs     r5, #0
pp414
    mov       r8, #0
pp409
    tst       lr, #2, 2  ; 0x80000000 = 2147483648
    bne       pp415     ;  pc+8+44
    adds      r6, r8, r9
    adcs      r2, r2, r4
    adcs      r0, r0, r5
    ldmccia   sp!, {lr}  ; ldmccfd
    movcc     pc, lr
    add       r3, r3, #1
    movs      r0, r0, rrx
    movs      r2, r2, rrx
    orr       r6, r6, r6, lsl #1
    mov       r6, r6, rrx
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp415
    subs      r6, r8, r9
    sbcs      r2, r2, r4
    sbcs      r0, r0, r5
    bcs       pp416     ;  pc+8+12
    eor       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    rsbs      r6, r6, #0
    rscs      r2, r2, #0
    rsc       r0, r0, #0
pp416
    tst       r0, #2, 2  ; 0x80000000 = 2147483648
    ldmneia   sp!, {lr}  ; ldmnefd
    movne     pc, lr
    adds      r6, r6, r6
    adcs      r2, r2, r2
    adc       r0, r0, r0
    sub       r3, r3, #1
    tst       r0, #2, 2  ; 0x80000000 = 2147483648
    ldmneia   sp!, {lr}  ; ldmnefd
    movne     pc, lr
    orrs      lr, r0, r2
    blne      __fp_normalise_op1  ; 1004D748
    ldmneia   sp!, {lr}  ; ldmnefd
    movne     pc, lr
    mov       r1, #0
    mov       r0, #0
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    IMPENTRY __fp_addsub_uncommon
    mov       r9, r3, lsl #17
    cmn       r9, #2, 16  ; 0x20000 = 131072
    andcc     r9, r9, r5
    ands      r9, r9, r3, lsl #1
    mov       r8, r1, lsl #17
    cmn       r8, #2, 16  ; 0x20000 = 131072
    andcc     r8, r8, r0
    ands      r8, r8, r1, lsl #1
    bmi       pp417     ;  pc+8+88
    tst       r9, #2, 2  ; 0x80000000 = 2147483648
    bne       pp418     ;  pc+8+144
    stmdb     sp!, {lr}  ; stmfd
    ands      r6, r0, r1, lsl #1
    bicmi     r0, r0, #2, 2  ; 0x80000000 = 2147483648
    addmi     r1, r1, #1
    ands      r6, r5, r3, lsl #1
    bicmi     r5, r5, #2, 2  ; 0x80000000 = 2147483648
    addmi     r3, r3, #1
    tst       r1, #1, 2  ; 0x40000000 = 1073741824
    movnes    r6, r1, lsl #17
    blne      __fp_norm_denorm_op1  ; 1004D554
    tst       r3, #1, 2  ; 0x40000000 = 1073741824
    movnes    r6, r3, lsl #17
    blne      __fp_norm_denorm_op2  ; 1004D63C
    bl        __fp_addsub_common  ; 10045590
    tst       r0, #2, 2  ; 0x80000000 = 2147483648
    ldmneia   sp!, {lr}  ; ldmnefd
    movne     pc, lr
    orrs      lr, r0, r2
    blne      __fp_normalise_op1  ; 1004D748
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
pp417
    tst       r9, #2, 2  ; 0x80000000 = 2147483648
    beq       pp419     ;  pc+8+36
    orr       r8, r2, r0, lsl #1
    orr       r8, r8, r4
    orrs      r8, r8, r5, lsl #1
    bne       __fp_convert_NaNs  ; 1004D480
    eor       r8, r3, r11, lsl #10
    eors      r8, r8, r1
    andpl     r8, r1, #2, 2  ; 0x80000000 = 2147483648
    bpl       pp420     ;  pc+8+40
    orr       r1, r1, #1
    mov       pc, lr
pp419
    orrs      r8, r2, r0, lsl #1
    bne       __fp_convert_NaN_1Of2  ; 1004D4C4
    and       r8, r1, #2, 2  ; 0x80000000 = 2147483648
    b         pp420     ;  pc+8+16
pp418
    orrs      r8, r4, r5, lsl #1
    bne       __fp_convert_NaN_2Of2  ; 1004D4A0
    and       r8, r3, #2, 2  ; 0x80000000 = 2147483648
    tst       r11, #2, 12  ; 0x200000 = 2097152
    eorne     r8, r8, #2, 2  ; 0x80000000 = 2147483648
pp420
    tst       r11, #1, 12  ; 0x100000 = 1048576
    eorne     r8, r8, #2, 2  ; 0x80000000 = 2147483648
    add       r1, pc, #0x14  ; 0x14 = 20
    ldmia     r1, {r0 - r2}  ; ldmfd
    orr       r1, r1, r8
    mov       pc, lr
    DCD 0x00000000
    DCD 0x00000000
    DCD 0x00000000
    DCD 0x40007FFF
    DCD 0x00000000
    DCD 0x00000000
    IMPENTRY __fp_norm_op1
    tst       r0, #2, 2  ; 0x80000000 = 2147483648
    moveq     pc, lr
    stmdb     sp!, {r3, lr}  ; stmfd
    bics      r0, r0, #2, 2  ; 0x80000000 = 2147483648
    beq       pp422     ;  pc+8+84
    movs      r3, r0, lsr #16
    moveq     r0, r0, lsl #16
    moveq     r12, #0x10  ; 0x10 = 16
    movne     r12, #0
    movs      r3, r0, lsr #24
    moveq     r0, r0, lsl #8
    addeq     r12, r12, #8
    movs      r3, r0, lsr #28
    moveq     r0, r0, lsl #4
    addeq     r12, r12, #4
    movs      r3, r0, lsr #30
    moveq     r0, r0, lsl #2
    addeq     r12, r12, #2
    movs      r3, r0, lsr #31
    moveq     r0, r0, lsl #1
    addeq     r12, r12, #1
    rsb       r3, r12, #0x20  ; 0x20 = 32
    orr       r0, r0, r2, lsr r3
    mov       r2, r2, lsl r12
    sub       r1, r1, r12
    add       r1, r1, #1
    ldmia     sp!, {r3, pc}  ; ldmfd
pp422
    movs      r3, r2, lsr #16
    moveq     r2, r2, lsl #16
    moveq     r12, #0x10  ; 0x10 = 16
    movne     r12, #0
    movs      r3, r2, lsr #24
    moveq     r2, r2, lsl #8
    addeq     r12, r12, #8
    movs      r3, r2, lsr #28
    moveq     r2, r2, lsl #4
    addeq     r12, r12, #4
    movs      r3, r2, lsr #30
    moveq     r2, r2, lsl #2
    addeq     r12, r12, #2
    movs      r3, r2, lsr #31
    moveq     r2, r2, lsl #1
    addeq     r12, r12, #1
    mov       r0, r2
    mov       r2, #0
    sub       r1, r1, #0x1F  ; 0x1F = 31
    sub       r1, r1, r12
    ldmia     sp!, {r3, pc}  ; ldmfd
    IMPENTRY __fp_norm_op2
    tst       r5, #2, 2  ; 0x80000000 = 2147483648
    moveq     pc, lr
    stmdb     sp!, {r1, lr}  ; stmfd
    bics      r5, r5, #2, 2  ; 0x80000000 = 2147483648
    beq       pp423     ;  pc+8+84
    movs      r1, r5, lsr #16
    moveq     r5, r5, lsl #16
    moveq     r12, #0x10  ; 0x10 = 16
    movne     r12, #0
    movs      r1, r5, lsr #24
    moveq     r5, r5, lsl #8
    addeq     r12, r12, #8
    movs      r1, r5, lsr #28
    moveq     r5, r5, lsl #4
    addeq     r12, r12, #4
    movs      r1, r5, lsr #30
    moveq     r5, r5, lsl #2
    addeq     r12, r12, #2
    movs      r1, r5, lsr #31
    moveq     r5, r5, lsl #1
    addeq     r12, r12, #1
    rsb       r1, r12, #0x20  ; 0x20 = 32
    orr       r5, r5, r4, lsr r1
    mov       r4, r4, lsl r12
    sub       r3, r3, r12
    add       r3, r3, #1
    ldmia     sp!, {r1, pc}  ; ldmfd
pp423
    movs      r1, r4, lsr #16
    moveq     r4, r4, lsl #16
    moveq     r12, #0x10  ; 0x10 = 16
    movne     r12, #0
    movs      r1, r4, lsr #24
    moveq     r4, r4, lsl #8
    addeq     r12, r12, #8
    movs      r1, r4, lsr #28
    moveq     r4, r4, lsl #4
    addeq     r12, r12, #4
    movs      r1, r4, lsr #30
    moveq     r4, r4, lsl #2
    addeq     r12, r12, #2
    movs      r1, r4, lsr #31
    moveq     r4, r4, lsl #1
    addeq     r12, r12, #1
    mov       r5, r4
    mov       r4, #0
    sub       r3, r3, #0x1F  ; 0x1F = 31
    sub       r3, r3, r12
    ldmia     sp!, {r1, pc}  ; ldmfd

    IMPENTRY FPE_Raise
;    IMPORT dd10
dd10 EQU 0xeb00070e
    mov       r12, sp
    stmdb     sp!, {r0 - r3}  ; stmfd
    stmdb     sp!, {r4 - r12, lr}  ; stmfd
    sub       sp, sp, #0x60  ; 0x60 = 96
    str       r0, [sp, #0x88]  ; 0x88 = 136
    add       lr, sp, #8
    mov       r0, r1, lsr #20
    ldr     r11, =dd10  ; unknown data is saved in r11
    str       lr, [sp]
    and       r10, r0, #0x1F  ; 0x1F = 31
    ands      r9, r1, #1
    mov        r0, r11 ; ldr       r0, [r11]
    mov       lr, #0x40  ; 0x40 = 64
    str       r2, [sp, #0x90]  ; 0x90 = 144
    moveq     lr, #0
    str       r3, [sp, #0x94]  ; 0x94 = 148
    orr       lr, lr, r0
    ands      r8, r1, #2
    mov       r0, #0x20  ; 0x20 = 32
    moveq     r0, #0
    orr       lr, r0, lr
    ands      r7, r1, #4
    mov       r0, #0x10  ; 0x10 = 16
    moveq     r0, #0
    orr       lr, r0, lr
    ands      r5, r1, #8
    mov       r0, #8
    moveq     r0, #0
    orr       lr, r0, lr
    ands      r4, r1, #0x10  ; 0x10 = 16
    mov       r0, #4
    moveq     r0, #0
    orr       r6, r0, lr
    cmp       r9, #0
    mov       r11, r6 ; str       r6, [r11]
    andnes    r1, r6, #2, 22  ; 0x800 = 2048
    movne     r0, #3, 2  ; 0xC0000000 = 3221225472
    orrne     r0, r0, #0x90  ; 0x90 = 144
    bne       pp424     ;  pc+8+80
    cmp       r8, #0
    andnes    r1, r6, #1, 22  ; 0x400 = 1024
    movne     r0, #3, 2  ; 0xC0000000 = 3221225472
    orrne     r0, r0, #0x8E  ; 0x8E = 142
    bne       pp424     ;  pc+8+60
    cmp       r7, #0
    andnes    r1, r6, #2, 24  ; 0x200 = 512
    movne     r0, #3, 2  ; 0xC0000000 = 3221225472
    orrne     r0, r0, #0x91  ; 0x91 = 145
    bne       pp424     ;  pc+8+40
    cmp       r5, #0
    andnes    r1, r6, #1, 24  ; 0x100 = 256
    movne     r0, #3, 2  ; 0xC0000000 = 3221225472
    orrne     r0, r0, #0x93  ; 0x93 = 147
    bne       pp424     ;  pc+8+20
    cmp       r4, #0
    beq       pp428     ;  pc+8+2156
    ands      r1, r6, #0x80  ; 0x80 = 128
    beq       pp428     ;  pc+8+2148
    mov       r0, #3, 2  ; 0xC0000000 = 3221225472
    orr       r0, r0, #0x8F  ; 0x8F = 143
pp424
    ands      r1, r6, #3
    beq       pp430     ;  pc+8+68
    cmp       r1, #1
    beq       pp431     ;  pc+8+48
    cmp       r1, #2
    beq       pp432     ;  pc+8+24
    cmp       r1, #3
    ldr       r1, [sp, #8]
    bne       pp433     ;  pc+8+48
    bic       r1, r1, #2
    orr       r1, r1, #1
    b         pp433     ;  pc+8+36
pp432
    ldr       r1, [sp, #8]
    bic       r1, r1, #1
    orr       r1, r1, #2
    b         pp433     ;  pc+8+16
pp431
    ldr       r1, [sp, #8]
    orr       r1, r1, #3
    b         pp433     ;  pc+8+4
pp430
    ldr       r1, [sp, #8]
    bic       r1, r1, #3
pp433
    bic       r1, r1, #0x1C  ; 0x1C = 28
    str       r1, [sp, #8]
    cmp       r10, #0x1A  ; 0x1A = 26
    addls     pc, pc, r10, lsl #2
    b         pp437     ;  pc+8+240
    b         pp438     ;  pc+8+100
    b         pp438     ;  pc+8+96
    b         pp440     ;  pc+8+172
    b         pp440     ;  pc+8+168
    b         pp442     ;  pc+8+104
    b         pp442     ;  pc+8+100
    b         pp444     ;  pc+8+116
    b         pp444     ;  pc+8+112
    b         pp446     ;  pc+8+168
    b         pp446     ;  pc+8+164
    b         pp446     ;  pc+8+160
    b         pp446     ;  pc+8+156
    b         pp446     ;  pc+8+152
    b         pp446     ;  pc+8+148
    b         pp452     ;  pc+8+104
    b         pp452     ;  pc+8+100
    b         pp446     ;  pc+8+136
    b         pp446     ;  pc+8+132
    b         pp446     ;  pc+8+128
    b         pp446     ;  pc+8+124
    b         pp446     ;  pc+8+120
    b         pp446     ;  pc+8+116
    b         pp446     ;  pc+8+112
    b         pp446     ;  pc+8+108
    b         pp446     ;  pc+8+104
    b         pp446     ;  pc+8+100
    b         pp464     ;  pc+8+116
pp438
    ldr       lr, [pc, #8]  ;  pc+8+8 = 10045B6C
    and       r1, lr, r1
    orr       r1, r1, #0x20  ; 0x20 = 32
    b         pp465     ;  pc+8+112
    DCD 0xFFFE003F
pp442
    ldr       lr, [pc, #8]  ;  pc+8+8 = 10045B80
    and       r1, lr, r1
    orr       r1, r1, #0xE0  ; 0xE0 = 224
    b         pp465     ;  pc+8+92
    DCD 0xFFFE00FF
pp444
    ldr       lr, [pc, #8]  ;  pc+8+8 = 10045B94
    and       r1, lr, r1
    orr       r1, r1, #0x80  ; 0x80 = 128
    b         pp465     ;  pc+8+72
    DCD 0xFFFE009F
pp452
    ldr       lr, [pc, #8]  ;  pc+8+8 = 10045BA8
    and       r1, lr, r1
    orr       r1, r1, #0x60  ; 0x60 = 96
    b         pp465     ;  pc+8+52
    DCD 0xFFFE007F
pp440
    ldr       lr, [pc, #8]  ;  pc+8+8 = 10045BBC
    and       r1, lr, r1
    orr       r1, r1, #0x40  ; 0x40 = 64
    b         pp465     ;  pc+8+32
    DCD 0xFFFE005F
pp446
    ldr       lr, [pc, #8]  ;  pc+8+8 = 10045BD0
    and       r1, lr, r1
    orr       r1, r1, #1, 24  ; 0x100 = 256
    b         pp465     ;  pc+8+12
    DCD 0xFFFE011F
pp464      ldr       lr, [pc, #0x204]  ;  pc+8+516 = 10045DE0
    and       r1, lr, r1
    orr       r1, r1, #0x12, 28  ; 0x120 = 288
pp465
    str       r1, [sp, #8]
pp437
    cmp       r4, #0
    ldr       r1, [sp, #0xC]  ; 0xC = 12
    mov       lr, #1
    moveq     lr, #0
    eor       lr, lr, r1
    and       lr, lr, #1
    eor       lr, lr, r1
    cmp       r5, #0
    mov       r1, #1
    moveq     r1, #0
    and       r1, r1, #1
    bic       lr, lr, #2
    orr       lr, lr, r1, lsl #1
    cmp       r7, #0
    mov       r1, #1
    moveq     r1, #0
    and       r1, r1, #1
    bic       lr, lr, #4
    orr       lr, lr, r1, lsl #2
    cmp       r8, #0
    mov       r1, #1
    moveq     r1, #0
    and       r1, r1, #1
    bic       lr, lr, #8
    orr       lr, lr, r1, lsl #3
    cmp       r9, #0
    mov       r1, #1
    moveq     r1, #0
    and       r1, r1, #1
    bic       lr, lr, #0x10  ; 0x10 = 16
    orr       r1, lr, r1, lsl #4
    str       r1, [sp, #0xC]  ; 0xC = 12
    ands      r1, r6, #0x80  ; 0x80 = 128
    mov       lr, #1
    ldr       r1, [sp, #0x10]  ; 0x10 = 16
    moveq     lr, #0
    eor       lr, lr, r1
    and       lr, lr, #1
    eor       lr, lr, r1
    ands      r1, r6, #1, 24  ; 0x100 = 256
    mov       r1, #1
    moveq     r1, #0
    and       r1, r1, #1
    bic       lr, lr, #2
    orr       lr, lr, r1, lsl #1
    ands      r1, r6, #2, 24  ; 0x200 = 512
    mov       r1, #1
    moveq     r1, #0
    and       r1, r1, #1
    bic       lr, lr, #4
    orr       lr, lr, r1, lsl #2
    ands      r1, r6, #1, 22  ; 0x400 = 1024
    mov       r1, #1
    moveq     r1, #0
    and       r1, r1, #1
    bic       lr, lr, #8
    orr       lr, lr, r1, lsl #3
    ands      r1, r6, #2, 22  ; 0x800 = 2048
    mov       r1, #1
    moveq     r1, #0
    and       r1, r1, #1
    bic       lr, lr, #0x10  ; 0x10 = 16
    orr       r1, lr, r1, lsl #4
    str       r1, [sp, #0x10]  ; 0x10 = 16
    ands      r1, r6, #4
    mov       lr, #1
    ldr       r1, [sp, #0x14]  ; 0x14 = 20
    moveq     lr, #0
    eor       lr, lr, r1
    and       lr, lr, #1
    eor       lr, lr, r1
    ands      r1, r6, #8
    mov       r1, #1
    moveq     r1, #0
    and       r1, r1, #1
    bic       lr, lr, #2
    orr       lr, lr, r1, lsl #1
    ands      r1, r6, #0x10  ; 0x10 = 16
    mov       r1, #1
    moveq     r1, #0
    and       r1, r1, #1
    bic       lr, lr, #4
    orr       lr, lr, r1, lsl #2
    ands      r1, r6, #0x20  ; 0x20 = 32
    mov       r1, #1
    moveq     r1, #0
    and       r1, r1, #1
    bic       lr, lr, #8
    orr       lr, lr, r1, lsl #3
    ands      r1, r6, #0x40  ; 0x40 = 64
    mov       r1, #1
    moveq     r1, #0
    and       r1, r1, #1
    bic       lr, lr, #0x10  ; 0x10 = 16
    orr       r1, lr, r1, lsl #4
    str       r1, [sp, #0x14]  ; 0x14 = 20
    cmp       r10, #0x1A  ; 0x1A = 26
    bhi       pp471     ;  pc+8+980
    add       pc, pc, r10, lsl #2
    b         pp472     ;  pc+8+368
    b         pp473     ;  pc+8+104
    b         pp474     ;  pc+8+124
    b         pp473     ;  pc+8+96
    b         pp474     ;  pc+8+116
    b         pp473     ;  pc+8+88
    b         pp474     ;  pc+8+108
    b         pp473     ;  pc+8+80
    b         pp474     ;  pc+8+100
    b         pp473     ;  pc+8+72
    b         pp473     ;  pc+8+68
    b         pp473     ;  pc+8+64
    b         pp473     ;  pc+8+60
    b         pp473     ;  pc+8+56
    b         pp486     ;  pc+8+96
    b         pp473     ;  pc+8+48
    b         pp474     ;  pc+8+68
    b         pp474     ;  pc+8+64
    b         pp474     ;  pc+8+60
    b         pp474     ;  pc+8+56
    b         pp474     ;  pc+8+52
    b         pp474     ;  pc+8+48
    b         pp494     ;  pc+8+84
    b         pp495     ;  pc+8+100
    b         pp495     ;  pc+8+96
    b         pp497     ;  pc+8+180
    b         pp497     ;  pc+8+176
    b         pp473     ;  pc+8+0
    DCD 0xFFFE013F
pp473
    str       r3, [sp, #0x1C]  ; 0x1C = 28
    ldr       r3, [sp, #0x28]  ; 0x28 = 40
    str       r2, [sp, #0x18]  ; 0x18 = 24
    bic       r3, r3, #0x1C  ; 0x1C = 28
    orr       r3, r3, #3
    b         pp500     ;  pc+8+228
pp474
    ldr       r3, [sp, #0x28]  ; 0x28 = 40
    str       r2, [sp, #0x18]  ; 0x18 = 24
    bic       r3, r3, #0x1E  ; 0x1E = 30
    orr       r3, r3, #1
    b         pp500     ;  pc+8+208
pp486
    ldr       r3, [sp, #0x28]  ; 0x28 = 40
    str       r2, [sp, #0x18]  ; 0x18 = 24
    bic       r3, r3, #0x14  ; 0x14 = 20
    orr       r3, r3, #0xB  ; 0xB = 11
    b         pp500     ;  pc+8+188
pp494
    ldr       r3, [sp, #0x28]  ; 0x28 = 40
    str       r2, [sp, #0x18]  ; 0x18 = 24
    bic       r3, r3, #0xE  ; 0xE = 14
    orr       r3, r3, #0x11  ; 0x11 = 17
    b         pp500     ;  pc+8+168
pp495
    add       r3, sp, #0x90  ; 0x90 = 144
    ldrb      r1, [r3]
    add       r2, sp, #0x18  ; 0x18 = 24
    strb      r1, [r2]
    ldrb      r1, [r3, #1]
    strb      r1, [r2, #1]
    ldrb      r1, [r3, #2]
    strb      r1, [r2, #2]
    ldrb      r1, [r3, #3]
    strb      r1, [r2, #3]
    ldrb      r1, [r3, #4]
    strb      r1, [r2, #4]
    ldrb      r1, [r3, #5]
    strb      r1, [r2, #5]
    ldrb      r1, [r3, #6]
    strb      r1, [r2, #6]
    ldrb      r3, [r3, #7]
    strb      r3, [r2, #7]
    ldr       r3, [sp, #0x28]  ; 0x28 = 40
    bic       r3, r3, #0x12  ; 0x12 = 18
    orr       r3, r3, #0xD  ; 0xD = 13
    b         pp500     ;  pc+8+80
pp497
    add       r3, sp, #0x90  ; 0x90 = 144
    ldrb      r1, [r3]
    add       r2, sp, #0x18  ; 0x18 = 24
    strb      r1, [r2]
    ldrb      r1, [r3, #1]
    strb      r1, [r2, #1]
    ldrb      r1, [r3, #2]
    strb      r1, [r2, #2]
    ldrb      r1, [r3, #3]
    strb      r1, [r2, #3]
    ldrb      r1, [r3, #4]
    strb      r1, [r2, #4]
    ldrb      r1, [r3, #5]
    strb      r1, [r2, #5]
    ldrb      r1, [r3, #6]
    strb      r1, [r2, #6]
    ldrb      r3, [r3, #7]
    strb      r3, [r2, #7]
    ldr       r3, [sp, #0x28]  ; 0x28 = 40
    bic       r3, r3, #0xC  ; 0xC = 12
    orr       r3, r3, #0x13  ; 0x13 = 19
pp500
    str       r3, [sp, #0x28]  ; 0x28 = 40
pp472
    add       pc, pc, r10, lsl #2
    b         pp505     ;  pc+8+172
    b         pp506     ;  pc+8+100
    b         pp507     ;  pc+8+128
    b         pp506     ;  pc+8+92
    b         pp507     ;  pc+8+120
    b         pp506     ;  pc+8+84
    b         pp507     ;  pc+8+112
    b         pp506     ;  pc+8+76
    b         pp507     ;  pc+8+104
    b         pp514     ;  pc+8+124
    b         pp514     ;  pc+8+120
    b         pp514     ;  pc+8+116
    b         pp514     ;  pc+8+112
    b         pp514     ;  pc+8+108
    b         pp514     ;  pc+8+104
    b         pp506     ;  pc+8+44
    b         pp507     ;  pc+8+72
    b         pp514     ;  pc+8+92
    b         pp514     ;  pc+8+88
    b         pp514     ;  pc+8+84
    b         pp514     ;  pc+8+80
    b         pp514     ;  pc+8+76
    b         pp514     ;  pc+8+72
    b         pp514     ;  pc+8+68
    b         pp514     ;  pc+8+64
    b         pp514     ;  pc+8+60
    b         pp514     ;  pc+8+56
    b         pp514     ;  pc+8+52
pp506
    ldr       r3, [sp, #0x98]  ; 0x98 = 152
    str       r3, [sp, #0x30]  ; 0x30 = 48
    ldr       r3, [sp, #0x9C]  ; 0x9C = 156
    str       r3, [sp, #0x34]  ; 0x34 = 52
    ldr       r3, [sp, #0x40]  ; 0x40 = 64
    bic       r3, r3, #0x1C  ; 0x1C = 28
    orr       r3, r3, #3
    b         pp533     ;  pc+8+28
pp507
    ldr       r3, [sp, #0x98]  ; 0x98 = 152
    str       r3, [sp, #0x30]  ; 0x30 = 48
    ldr       r3, [sp, #0x40]  ; 0x40 = 64
    bic       r3, r3, #0x1E  ; 0x1E = 30
    orr       r3, r3, #1
    b         pp533     ;  pc+8+4
pp514
    ldr       r3, [sp, #0x40]  ; 0x40 = 64
    bic       r3, r3, #1
pp533
    str       r3, [sp, #0x40]  ; 0x40 = 64
pp505
    add       pc, pc, r10, lsl #2
    b         pp471     ;  pc+8+408
    b         pp536     ;  pc+8+100
    b         pp537     ;  pc+8+128
    b         pp536     ;  pc+8+92
    b         pp537     ;  pc+8+120
    b         pp540     ;  pc+8+364
    b         pp540     ;  pc+8+360
    b         pp536     ;  pc+8+76
    b         pp537     ;  pc+8+104
    b         pp544     ;  pc+8+124
    b         pp545     ;  pc+8+168
    b         pp537     ;  pc+8+92
    b         pp547     ;  pc+8+136
    b         pp548     ;  pc+8+244
    b         pp537     ;  pc+8+80
    b         pp536     ;  pc+8+44
    b         pp537     ;  pc+8+72
    b         pp536     ;  pc+8+36
    b         pp544     ;  pc+8+88
    b         pp545     ;  pc+8+132
    b         pp547     ;  pc+8+104
    b         pp548     ;  pc+8+212
    b         pp537     ;  pc+8+48
    b         pp536     ;  pc+8+12
    b         pp537     ;  pc+8+40
    b         pp536     ;  pc+8+4
    b         pp537     ;  pc+8+32
    b         pp536     ;  pc+8-4
pp536
    ldr       r3, [sp, #0xA0]  ; 0xA0 = 160
    str       r3, [sp, #0x48]  ; 0x48 = 72
    ldr       r3, [sp, #0xA4]  ; 0xA4 = 164
    str       r3, [sp, #0x4C]  ; 0x4C = 76
    ldr       r3, [sp, #0x58]  ; 0x58 = 88
    bic       r3, r3, #0x1C  ; 0x1C = 28
    orr       r3, r3, #3
    b         pp563     ;  pc+8+264
pp537
    ldr       r3, [sp, #0xA0]  ; 0xA0 = 160
    str       r3, [sp, #0x48]  ; 0x48 = 72
    ldr       r3, [sp, #0x58]  ; 0x58 = 88
    bic       r3, r3, #0x1E  ; 0x1E = 30
    orr       r3, r3, #1
    b         pp563     ;  pc+8+240
pp544
    ldr       r3, [sp, #0xA0]  ; 0xA0 = 160
    str       r3, [sp, #0x48]  ; 0x48 = 72
    ldr       r3, [sp, #0x58]  ; 0x58 = 88
    bic       r3, r3, #0x14  ; 0x14 = 20
    orr       r3, r3, #0xB  ; 0xB = 11
    b         pp563     ;  pc+8+216
pp547
    ldr       r3, [sp, #0xA0]  ; 0xA0 = 160
    str       r3, [sp, #0x48]  ; 0x48 = 72
    ldr       r3, [sp, #0x58]  ; 0x58 = 88
    bic       r3, r3, #0xE  ; 0xE = 14
    orr       r3, r3, #0x11  ; 0x11 = 17
    b         pp563     ;  pc+8+192
pp545
    add       r3, sp, #0xA0  ; 0xA0 = 160
    ldrb      r1, [r3]
    add       r2, sp, #0x48  ; 0x48 = 72
    strb      r1, [r2]
    ldrb      r1, [r3, #1]
    strb      r1, [r2, #1]
    ldrb      r1, [r3, #2]
    strb      r1, [r2, #2]
    ldrb      r1, [r3, #3]
    strb      r1, [r2, #3]
    ldrb      r1, [r3, #4]
    strb      r1, [r2, #4]
    ldrb      r1, [r3, #5]
    strb      r1, [r2, #5]
    ldrb      r1, [r3, #6]
    strb      r1, [r2, #6]
    ldrb      r3, [r3, #7]
    strb      r3, [r2, #7]
    ldr       r3, [sp, #0x58]  ; 0x58 = 88
    bic       r3, r3, #0x12  ; 0x12 = 18
    orr       r3, r3, #0xD  ; 0xD = 13
    b         pp563     ;  pc+8+104
pp548
    add       r3, sp, #0xA0  ; 0xA0 = 160
    ldrb      r1, [r3]
    add       r2, sp, #0x48  ; 0x48 = 72
    strb      r1, [r2]
    ldrb      r1, [r3, #1]
    strb      r1, [r2, #1]
    ldrb      r1, [r3, #2]
    strb      r1, [r2, #2]
    ldrb      r1, [r3, #3]
    strb      r1, [r2, #3]
    ldrb      r1, [r3, #4]
    strb      r1, [r2, #4]
    ldrb      r1, [r3, #5]
    strb      r1, [r2, #5]
    ldrb      r1, [r3, #6]
    strb      r1, [r2, #6]
    ldrb      r3, [r3, #7]
    strb      r3, [r2, #7]
    ldr       r3, [sp, #0x58]  ; 0x58 = 88
    bic       r3, r3, #0xC  ; 0xC = 12
    orr       r3, r3, #0x13  ; 0x13 = 19
    b         pp563     ;  pc+8+16
pp540
    ldr       r3, [sp, #0xA0]  ; 0xA0 = 160
    str       r3, [sp, #0x48]  ; 0x48 = 72
    ldr       r3, [sp, #0x58]  ; 0x58 = 88
    bic       r3, r3, #8
    orr       r3, r3, #0x17  ; 0x17 = 23
pp563
    str       r3, [sp, #0x58]  ; 0x58 = 88
pp471
    add       r3, sp, #0
    ldr       r9, [pc, #0x3C]  ;  pc+8+60 = 1004618C
    mov       r2, #1
    mov       r1, #0
    mov       lr, pc
    mov       pc, r9
    ldr       r3, [sp, #8]
    mov       r1, #0
    ands      r0, r3, #3
    beq       pp569     ;  pc+8+44
    cmp       r0, #1
    beq       pp570     ;  pc+8+32
    cmp       r0, #2
    beq       pp571     ;  pc+8+16
    cmp       r0, #3
    bne       pp569     ;  pc+8+20
    mov       r1, #1
    b         pp569     ;  pc+8+12
    DCD       __fp_error  ;0xF000FE38  ; syscall may cause error
pp571
    mov       r1, #2
    b         pp569     ;  pc+8+0
pp570
    mov       r1, #3
pp569
    ldr       r2, [sp, #0x10]  ; 0x10 = 16
    mov       r0, #0x80  ; 0x80 = 128
    ands      r3, r2, #1
    moveq     r0, #0
    orr       r1, r0, r1
    ands      r3, r2, #2
    mov       r0, #1, 24  ; 0x100 = 256
    moveq     r0, #0
    orr       r1, r0, r1
    ands      r3, r2, #4
    mov       r0, #2, 24  ; 0x200 = 512
    moveq     r0, #0
    orr       r1, r0, r1
    ands      r3, r2, #8
    mov       r0, #1, 22  ; 0x400 = 1024
    moveq     r0, #0
    orr       r1, r0, r1
    ands      r3, r2, #0x10  ; 0x10 = 16
    mov       r0, #2, 22  ; 0x800 = 2048
    moveq     r0, #0
    orr       r1, r0, r1
    cmp       r10, #0x1A  ; 0x1A = 26
    addls     pc, pc, r10, lsl #2
    b         pp575     ;  pc+8+208
    b         pp576     ;  pc+8+100
    b         pp577     ;  pc+8+192
    b         pp576     ;  pc+8+92
    b         pp577     ;  pc+8+184
    b         pp577     ;  pc+8+180
    b         pp577     ;  pc+8+176
    b         pp576     ;  pc+8+76
    b         pp577     ;  pc+8+168
    b         pp577     ;  pc+8+164
    b         pp585     ;  pc+8+84
    b         pp577     ;  pc+8+156
    b         pp577     ;  pc+8+152
    b         pp585     ;  pc+8+72
    b         pp577     ;  pc+8+144
    b         pp576     ;  pc+8+44
    b         pp577     ;  pc+8+136
    b         pp576     ;  pc+8+36
    b         pp577     ;  pc+8+128
    b         pp585     ;  pc+8+48
    b         pp577     ;  pc+8+120
    b         pp585     ;  pc+8+40
    b         pp577     ;  pc+8+112
    b         pp576     ;  pc+8+12
    b         pp577     ;  pc+8+104
    b         pp576     ;  pc+8+4
    b         pp577     ;  pc+8+96
    b         pp576     ;  pc+8-4
pp576
    ldr       r3, [sp, #0x48]  ; 0x48 = 72
    str       r3, [sp, #0xA0]  ; 0xA0 = 160
    ldr       r3, [sp, #0x4C]  ; 0x4C = 76
    str       r3, [sp, #0xA4]  ; 0xA4 = 164
    b         pp575     ;  pc+8+80
pp585
    add       r3, sp, #0x48  ; 0x48 = 72
    ldrb      r0, [r3]
    add       r2, sp, #0xA0  ; 0xA0 = 160
    strb      r0, [r2]
    ldrb      r0, [r3, #1]
    strb      r0, [r2, #1]
    ldrb      r0, [r3, #2]
    strb      r0, [r2, #2]
    ldrb      r0, [r3, #3]
    strb      r0, [r2, #3]
    ldrb      r0, [r3, #4]
    strb      r0, [r2, #4]
    ldrb      r0, [r3, #5]
    strb      r0, [r2, #5]
    ldrb      r0, [r3, #6]
    strb      r0, [r2, #6]
    ldrb      r3, [r3, #7]
    strb      r3, [r2, #7]
    b         pp575     ;  pc+8+4
pp577
    ldr       r3, [sp, #0x48]  ; 0x48 = 72
    str       r3, [sp, #0xA0]  ; 0xA0 = 160
pp575
    mov       r0, r11 ; ldr       r0, [r11]
    ldr       r3, [pc, #0x60]  ;  pc+8+96 = 1004633C
    and       r3, r3, r0
    orr       r0, r3, r1
    mov       r11, r0 ; str       r0, [r11]
pp428
    ldr       r0, [sp, #0x88]  ; 0x88 = 136
    add       r3, sp, #0xA0  ; 0xA0 = 160
    ldrb      r1, [r3]
    mov       r2, r0
    strb      r1, [r2]
    ldrb      r1, [r3, #1]
    strb      r1, [r2, #1]
    ldrb      r1, [r3, #2]
    strb      r1, [r2, #2]
    ldrb      r1, [r3, #3]
    strb      r1, [r2, #3]
    ldrb      r1, [r3, #4]
    strb      r1, [r2, #4]
    ldrb      r1, [r3, #5]
    strb      r1, [r2, #5]
    ldrb      r1, [r3, #6]
    strb      r1, [r2, #6]
    ldrb      r3, [r3, #7]
    strb      r3, [r2, #7]
    add       sp, sp, #0x60  ; 0x60 = 96
    ldmia     sp, {r4 - r11, sp, lr}  ; ldmfd
    mov       pc, lr

    DCD 0xFFFFF000
__fp_error
    mov       pc, lr    ; do nothing

    LTORG
    IMPENTRY _e2d
    mov       r3, r1, lsl #17
    mov       r3, r3, lsr #17
    bic       r1, r1, r3
    IMPENTRY __fp_e2d
    stmdb     sp!, {r10}  ; stmfd
    mov       r10, #0
    bics      r12, r0, r1, lsl #1
    bpl       pp605     ;  pc+8+60
    subs      r3, r3, #0xF, 22  ; 0x3C00 = 15360
    bmi       _e2d_ExpUnderflow  ; 100463E4
    addne     r12, r3, #1
    cmpne     r12, #2, 22  ; 0x800 = 2048
    bge       pp606     ;  pc+8+68
    movs      r12, r2, lsr #11
    bcs       pp607     ;  pc+8+504
    orrs      r6, r6, r2, lsl #21
    orrne     r10, r10, #0x10  ; 0x10 = 16
    orr       r1, r1, r3, lsl #20
    bic       r0, r0, #2, 2  ; 0x80000000 = 2147483648
    orr       r1, r1, r0, lsr #11
    orr       r0, r12, r0, lsl #21
    mov       r3, r10
    ldmia     sp!, {r10}  ; ldmfd
    mov       pc, lr
pp605
    tst       r1, #1, 2  ; 0x40000000 = 1073741824
    bne       pp608     ;  pc+8+396
    and       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    mov       r0, #0
    mov       r3, r10
    ldmia     sp!, {r10}  ; ldmfd
    mov       pc, lr
pp606
    teq       r3, #0
    beq       _e2d_ExpUnderflow  ; 100463E4
    mov       r10, #0x14  ; 0x14 = 20
    mov       r0, #0
    mvn       r2, #0
    ands      r1, r1, r2, lsl #20
    orr       r1, r1, r2, lsl #20
    bicpl     r1, r1, #2, 2  ; 0x80000000 = 2147483648
    mov       r3, r10
    ldmia     sp!, {r10}  ; ldmfd
    mov       pc, lr
    IMPENTRY _e2d_ExpUnderflow
    adds      r3, r3, #0x34  ; 0x34 = 52
    beq       pp609     ;  pc+8+292
    andmi     r1, r1, #2, 2  ; 0x80000000 = 2147483648
    movmi     r0, #0
    orrmi     r10, r10, #0x18  ; 0x18 = 24
    movmi     r3, r10
    ldmmiia   sp!, {r10}  ; ldmmifd
    movmi     pc, lr
    subs      r3, r3, #0x20  ; 0x20 = 32
    beq       pp610     ;  pc+8+112
    blt       pp611     ;  pc+8+168
    sub       r12, r3, #1
    orrs      r12, r6, r2, lsl r3
    orrne     r10, r10, #0x18  ; 0x18 = 24
    movs      r12, r2, lsl r3
    bmi       pp612     ;  pc+8+24
    rsb       r12, r3, #0x20  ; 0x20 = 32
    orr       r1, r1, r0, lsr r12
    mov       r2, r2, lsr r12
    orr       r0, r2, r0, lsl r3
    mov       r3, r10
    ldmia     sp!, {r10}  ; ldmfd
    mov       pc, lr
pp612
    orrs      r12, r6, r12, lsl #1
    rsb       r12, r3, #0x20  ; 0x20 = 32
    orr       r1, r1, r0, lsr r12
    mov       r2, r2, lsr r12
    orr       r0, r2, r0, lsl r3
    tsteq     r0, #1
    moveq     r3, r10
    ldmeqia   sp!, {r10}  ; ldmeqfd
    moveq     pc, lr
    adds      r0, r0, #1
    addcs     r1, r1, #1
    tst       r1, #1, 12  ; 0x100000 = 1048576
    bicne     r10, r10, #8
    mov       r3, r10
    ldmia     sp!, {r10}  ; ldmfd
    mov       pc, lr
pp610
    orrs      r12, r6, r2
    orrne     r10, r10, #0x18  ; 0x18 = 24
    teq       r2, #2, 2  ; 0x80000000 = 2147483648
    movmi     r3, r10
    ldmmiia   sp!, {r10}  ; ldmmifd
    movmi     pc, lr
    tsteq     r0, #1
    moveq     r3, r10
    ldmeqia   sp!, {r10}  ; ldmeqfd
    moveq     pc, lr
    adds      r0, r0, #1
    addcs     r1, r1, #1
    mov       r3, r10
    ldmia     sp!, {r10}  ; ldmfd
    mov       pc, lr
pp611
    add       r3, r3, #0x20  ; 0x20 = 32
    sub       r12, r3, #0
    orr       r12, r6, r0, lsl r12
    orrs      r12, r12, r2
    orrne     r10, r10, #0x18  ; 0x18 = 24
    movs      r12, r0, lsl r3
    bmi       pp613     ;  pc+8+20
    rsb       r12, r3, #0x20  ; 0x20 = 32
    mov       r0, r0, lsr r12
    and       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    mov       r3, r10
    ldmia     sp!, {r10}  ; ldmfd
    mov       pc, lr
pp613
    teq       r12, #2, 2  ; 0x80000000 = 2147483648
    orreqs    r12, r2, r6
    rsb       r12, r3, #0x20  ; 0x20 = 32
    mov       r0, r0, lsr r12
    tsteq     r0, #1
    addne     r0, r0, #1
    mov       r3, r10
    ldmia     sp!, {r10}  ; ldmfd
    mov       pc, lr
pp609
    teq       r0, #2, 2  ; 0x80000000 = 2147483648
    teqeq     r2, #0
    moveq     r0, #0
    movne     r0, #1
    orr       r10, r10, #0x18  ; 0x18 = 24
    mov       r3, r10
    ldmia     sp!, {r10}  ; ldmfd
    mov       pc, lr
pp608
    teq       r0, #0
    movnes    r0, r0, lsl #1
    mvnmi     r1, #0
    movmi     r3, r10
    ldmmiia   sp!, {r10}  ; ldmmifd
    movmi     pc, lr
    teqeq     r2, #0
    movne     r3, r10
    ldmneia   sp!, {r10}  ; ldmnefd
    movne     pc, lr
    and       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    orr       r1, r1, #7, 4  ; 0x70000000 = 1879048192
    orr       r1, r1, #0xFF, 12  ; 0xFF00000 = 267386880
    mov       r3, r10
    ldmia     sp!, {r10}  ; ldmfd
    mov       pc, lr
pp607
    bic       r0, r0, #2, 2  ; 0x80000000 = 2147483648
    orrs      r12, r6, r2, lsl #21
    orrne     r10, r10, #0x10  ; 0x10 = 16
    mov       r12, r2, lsl #22
    orrs      r12, r12, r6
    and       r12, r1, #2, 2  ; 0x80000000 = 2147483648
    mov       r1, r3, lsl #20
    orr       r1, r1, r0, lsr #11
    mov       r0, r0, lsl #21
    orr       r0, r0, r2, lsr #11
    beq       pp614     ;  pc+8+40
    adds      r0, r0, #1
    addcs     r1, r1, #1
    adds      r2, r1, #1, 12  ; 0x100000 = 1048576
    orr       r1, r1, r12
    movpl     r3, r10
    ldmplia   sp!, {r10}  ; ldmplfd
    movpl     pc, lr
    mov       r10, #0x14  ; 0x14 = 20
    mov       r3, r10
    ldmia     sp!, {r10}  ; ldmfd
    mov       pc, lr
pp614
    tsteq     r0, #1
    orreq     r1, r1, r12
    moveq     r3, r10
    ldmeqia   sp!, {r10}  ; ldmeqfd
    moveq     pc, lr
    adds      r0, r0, #1
    addcs     r1, r1, #1
    adds      r2, r1, #1, 12  ; 0x100000 = 1048576
    orr       r1, r1, r12
    movpl     r3, r10
    ldmplia   sp!, {r10}  ; ldmplfd
    movpl     pc, lr
    mov       r10, #0x14  ; 0x14 = 20
    mov       r3, r10
    ldmia     sp!, {r10}  ; ldmfd
    mov       pc, lr
    IMPENTRY __fp_div_common
    mov       r8, r1
    mov       r1, r3
    mov       r3, r8
    mov       r8, r0
    mov       r0, r5
    mov       r5, r8
    mov       r8, r2
    mov       r2, r4
    mov       r4, r8
    IMPENTRY __fp_rdv_common
    bic       r8, r1, #3, 2  ; 0xC0000000 = 3221225472
    bic       r9, r3, #3, 2  ; 0xC0000000 = 3221225472
    eor       r1, r1, r3
    and       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    sub       r3, r9, r8
    add       r3, r3, #0x3F, 24  ; 0x3F00 = 16128
    add       r3, r3, #0xFF  ; 0xFF = 255
pp620
    stmdb     sp!, {r1, r3, r7, r11, lr}  ; stmfd
    mov       r1, r0, lsr #16
    bic       r7, r0, r1, lsl #16
    mov       r11, r2, lsr #16
    bic       lr, r2, r11, lsl #16
    add       r6, pc, #0xDB, 30  ; 0x36C = 876
    ldrb      r6, [r6, +r1, lsr #8]
    mla       r8, r1, r6, r6
    rsb       r8, r8, #2, 10  ; 0x800000 = 8388608
    mul       r6, r8, r6
    mov       r6, r6, lsr #19
    add       r6, r6, #2
    mov       r8, r0, lsr #13
    mla       r9, r8, r6, r6
    rsb       r9, r9, #2, 4  ; 0x20000000 = 536870912
    mov       r8, r9, lsr #16
    bic       r9, r9, r8, lsl #16
    mul       r2, r9, r6
    mul       r0, r8, r6
    add       r6, r0, r2, lsr #16
    mov       r6, r6, lsr #6
    movs      r5, r5, lsr #1
    movs      r4, r4, rrx
    movcc     r3, #0
    movcs     r3, #2, 2  ; 0x80000000 = 2147483648
    mov       r8, r5, lsr #15
    mul       r9, r6, r8
    mov       r9, r9, lsr #16
    mul       r8, r9, r11
    subs      r4, r4, r8
    mul       r8, r1, r9
    sbc       r5, r5, r8
    mul       r8, r9, lr
    subs      r3, r3, r8, lsl #16
    sbcs      r4, r4, r8, lsr #16
    mul       r8, r9, r7
    subcc     r4, r4, r8, lsl #16
    subcss    r4, r4, r8, lsl #16
    sbc       r5, r5, r8, lsr #16
    mov       r0, r9, lsl #16
    mov       r8, r5, lsr #2
    mul       r9, r6, r8
    mov       r9, r9, lsr #16
    mul       r8, r9, r11
    subs      r3, r3, r8, lsl #19
    sbcs      r4, r4, r8, lsr #13
    mul       r8, r1, r9
    subcc     r4, r4, r8, lsl #19
    subcss    r4, r4, r8, lsl #19
    sbc       r5, r5, r8, lsr #13
    mul       r8, r9, lr
    subs      r3, r3, r8, lsl #3
    sbcs      r4, r4, r8, lsr #29
    mul       r8, r9, r7
    subcc     r4, r4, r8, lsl #3
    subcss    r4, r4, r8, lsl #3
    sbc       r5, r5, r8, lsr #29
    mov       r5, r5, lsl #26
    orr       r5, r5, r4, lsr #6
    mov       r4, r4, lsl #26
    orr       r4, r4, r3, lsr #6
    mov       r3, r3, lsl #26
    add       r0, r0, r9, lsl #3
    ldr       r8, [sp, #0xC]  ; 0xC = 12
    tst       r8, #1
    bne       pp615     ;  pc+8+600
    mov       r8, r5, lsr #15
    mul       r9, r6, r8
    mov       r9, r9, lsr #16
    mul       r8, r9, r11
    subs      r4, r4, r8
    mul       r8, r1, r9
    sbc       r5, r5, r8
    mul       r8, r9, lr
    subs      r3, r3, r8, lsl #16
    sbcs      r4, r4, r8, lsr #16
    mul       r8, r9, r7
    subcc     r4, r4, r8, lsl #16
    subcss    r4, r4, r8, lsl #16
    sbc       r5, r5, r8, lsr #16
    mov       r2, r9, lsl #22
    add       r0, r0, r9, lsr #10
    mov       r8, r5, lsr #2
    mul       r9, r6, r8
    mov       r9, r9, lsr #16
    mul       r8, r9, r11
    subs      r3, r3, r8, lsl #19
    sbcs      r4, r4, r8, lsr #13
    mul       r8, r1, r9
    subcc     r4, r4, r8, lsl #19
    subcss    r4, r4, r8, lsl #19
    sbc       r5, r5, r8, lsr #13
    mul       r8, r9, lr
    subs      r3, r3, r8, lsl #3
    sbcs      r4, r4, r8, lsr #29
    mul       r8, r9, r7
    subcc     r4, r4, r8, lsl #3
    subcss    r4, r4, r8, lsl #3
    sbc       r5, r5, r8, lsr #29
    mov       r5, r5, lsl #26
    orr       r5, r5, r4, lsr #6
    mov       r4, r4, lsl #26
    orr       r4, r4, r3, lsr #6
    mov       r3, r3, lsl #26
    adds      r2, r2, r9, lsl #9
    adc       r0, r0, #0
    ldr       r8, [sp, #0xC]  ; 0xC = 12
    tst       r8, #2
    bne       pp616     ;  pc+8+256
    mov       r8, r5, lsr #15
    mul       r9, r6, r8
    mov       r9, r9, lsr #16
    mul       r8, r9, r11
    subs      r4, r4, r8
    mul       r8, r1, r9
    sbc       r5, r5, r8
    mul       r8, r9, lr
    subs      r3, r3, r8, lsl #16
    sbcs      r4, r4, r8, lsr #16
    mul       r8, r9, r7
    subcc     r4, r4, r8, lsl #16
    subcss    r4, r4, r8, lsl #16
    sbc       r5, r5, r8, lsr #16
    mov       r5, r5, lsl #14
    orr       r5, r5, r4, lsr #18
    mov       r4, r4, lsl #14
    orr       r4, r4, r3, lsr #18
    mov       r3, r3, lsl #14
    mov       r6, r9, lsl #28
    adds      r2, r2, r9, lsr #4
    adc       r0, r0, #0
    orr       r1, r7, r1, lsl #16
    orr       r7, lr, r11, lsl #16
    mov       lr, #0
    subs      r9, r4, r7
    sbcs      r8, r5, r1
    movcs     r4, r9
    movcs     r5, r8
    adc       lr, lr, lr
    mov       r11, #0
    adds      r3, r3, r3
    adcs      r4, r4, r4
    adcs      r5, r5, r5
    adc       r11, r11, r11
    subs      r9, r4, r7
    sbcs      r8, r5, r1
    sbcs      r11, r11, #0
    movcs     r4, r9
    movcs     r5, r8
    adc       lr, lr, lr
    mov       r11, #0
    adds      r3, r3, r3
    adcs      r4, r4, r4
    adcs      r5, r5, r5
    adc       r11, r11, r11
    subs      r9, r4, r7
    sbcs      r8, r5, r1
    sbcs      r11, r11, #0
    movcs     r4, r9
    movcs     r5, r8
    adc       lr, lr, lr
    orrs      r8, r5, r4
    orrne     r6, r6, #1
    adds      r6, r6, lr, lsl #28
    adcs      r2, r2, #0
    adcs      r0, r0, #0
    ldmmiia   sp!, {r1, r3, r7, r11, lr}  ; ldmmifd
    movmi     pc, lr
    ldmia     sp!, {r1, r3, r7, r11, lr}  ; ldmfd
    adds      r6, r6, r6
    adcs      r2, r2, r2
    adc       r0, r0, r0
    sub       r3, r3, #1
    mov       pc, lr
pp616
    orr       r1, r7, r1, lsl #16
    orr       r7, lr, r11, lsl #16
    mov       lr, #0
    adds      r3, r3, r3
    adcs      r4, r4, r4
    adc       r5, r5, r5
    subs      r9, r4, r7
    sbcs      r8, r5, r1
    movcs     r4, r9
    movcs     r5, r8
    adc       lr, lr, lr
    mov       r11, #0
    adds      r3, r3, r3
    adcs      r4, r4, r4
    adcs      r5, r5, r5
    adc       r11, r11, r11
    subs      r9, r4, r7
    sbcs      r8, r5, r1
    sbcs      r11, r11, #0
    movcs     r4, r9
    movcs     r5, r8
    adc       lr, lr, lr
    mov       r11, #0
    adds      r3, r3, r3
    adcs      r4, r4, r4
    adcs      r5, r5, r5
    adc       r11, r11, r11
    subs      r9, r4, r7
    sbcs      r8, r5, r1
    sbcs      r11, r11, #0
    movcs     r4, r9
    movcs     r5, r8
    adc       lr, lr, lr
    orr       r6, r5, r4
    adds      r2, r2, lr, lsl #9
    adcs      r0, r0, #0
    ldmmiia   sp!, {r1, r3, r7, r11, lr}  ; ldmmifd
    movmi     pc, lr
    ldmia     sp!, {r1, r3, r7, r11, lr}  ; ldmfd
    adds      r2, r2, r2
    adc       r0, r0, r0
    sub       r3, r3, #1
    mov       pc, lr
pp615
    orr       r1, r7, r1, lsl #16
    orr       r7, lr, r11, lsl #16
    adds      r3, r3, r3
    adcs      r4, r4, r4
    adc       r5, r5, r5
    subs      r9, r4, r7
    sbcs      r8, r5, r1
    movcs     r4, r9
    movcs     r5, r8
    addcs     r0, r0, #0x20  ; 0x20 = 32
    mov       r11, #0
    adds      r3, r3, r3
    adcs      r4, r4, r4
    adcs      r5, r5, r5
    adc       r11, r11, r11
    subs      r9, r4, r7
    sbcs      r8, r5, r1
    sbcs      r11, r11, #0
    movcs     r4, r9
    movcs     r5, r8
    addcs     r0, r0, #0x10  ; 0x10 = 16
    mov       r11, #0
    adds      r3, r3, r3
    adcs      r4, r4, r4
    adcs      r5, r5, r5
    adc       r11, r11, r11
    subs      r9, r4, r7
    sbcs      r8, r5, r1
    sbcs      r11, r11, #0
    movcs     r4, r9
    movcs     r5, r8
    addcs     r0, r0, #8
    orr       r6, r5, r4
    mov       r2, #0
    teq       r0, #0
    ldmmiia   sp!, {r1, r3, r7, r11, lr}  ; ldmmifd
    movmi     pc, lr
    ldmia     sp!, {r1, r3, r7, r11, lr}  ; ldmfd
    mov       r0, r0, lsl #1
    sub       r3, r3, #1
    mov       pc, lr
    DCD 0x7E7F8080
    DCD 0x7A7B7C7D
    DCD 0x76777879
    DCD 0x73747576
    DCD 0x70717172
    DCD 0x6D6E6E6F
    DCD 0x6A6B6C6C
    DCD 0x6868696A
    DCD 0x65666667
    DCD 0x63636464
    DCD 0x60616162
    DCD 0x5E5F5F60
    DCD 0x5C5D5D5E
    DCD 0x5A5B5B5C
    DCD 0x5859595A
    DCD 0x56575758
    DCD 0x55555556
    DCD 0x53535454
    DCD 0x51525252
    DCD 0x50505051
    DCD 0x4E4F4F4F
    DCD 0x4D4D4D4E
    DCD 0x4B4C4C4C
    DCD 0x4A4A4B4B
    DCD 0x4949494A
    DCD 0x47484848
    DCD 0x46474747
    DCD 0x45454646
    DCD 0x44444445
    DCD 0x43434344
    DCD 0x42424243
    DCD 0x41414142
    IMPENTRY __fp_rdv_uncommon
    mov       r9, r3, lsl #17
    cmn       r9, #2, 16  ; 0x20000 = 131072
    andcc     r9, r9, r5
    ands      r9, r9, r3, lsl #1
    mov       r8, r1, lsl #17
    cmn       r8, #2, 16  ; 0x20000 = 131072
    andcc     r8, r8, r0
    ands      r8, r8, r1, lsl #1
    bmi       pp617     ;  pc+8+128
    tst       r9, #2, 2  ; 0x80000000 = 2147483648
    bne       pp618     ;  pc+8+200
    tst       r11, #4
    bne       pp619     ;  pc+8+32
    mov       r8, r1
    mov       r1, r3
    mov       r3, r8
    mov       r8, r0
    mov       r0, r5
    mov       r5, r8
    mov       r8, r2
    mov       r2, r4
    mov       r4, r8
pp619
    ands      r6, r0, r1, lsl #1
    bicmi     r0, r0, #2, 2  ; 0x80000000 = 2147483648
    addmi     r1, r1, #1
    ands      r6, r5, r3, lsl #1
    bicmi     r5, r5, #2, 2  ; 0x80000000 = 2147483648
    addmi     r3, r3, #1
    bic       r8, r1, #3, 2  ; 0xC0000000 = 3221225472
    bic       r9, r3, #3, 2  ; 0xC0000000 = 3221225472
    eor       r1, r1, r3
    and       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    sub       r3, r9, r8
    add       r3, r3, #0x3F, 24  ; 0x3F00 = 16128
    add       r3, r3, #0xFF  ; 0xFF = 255
    stmdb     sp!, {lr}  ; stmfd
    tst       r0, #2, 2  ; 0x80000000 = 2147483648
    bleq      __fp_normalise_op1neg  ; 1004D810
    tst       r5, #2, 2  ; 0x80000000 = 2147483648
    bleq      __fp_normalise_op2  ; 1004D7AC
    ldmia     sp!, {lr}  ; ldmfd
    b         pp620     ;  pc+8-1332
pp617
    tst       r9, #2, 2  ; 0x80000000 = 2147483648
    beq       pp621     ;  pc+8+20
    orr       r8, r2, r0, lsl #1
    orr       r8, r8, r4
    orrs      r8, r8, r5, lsl #1
    bne       __fp_convert_NaNs  ; 1004D480
    orr       r1, r1, #1
    mov       pc, lr
pp621
    orrs      r8, r2, r0, lsl #1
    bne       __fp_convert_NaN_1Of2  ; 1004D4C4
    eor       r8, r1, r3
    and       r8, r8, #2, 2  ; 0x80000000 = 2147483648
    tst       r11, #4
    addeq     r1, pc, #0x50  ; 0x50 = 80
    addne     r1, pc, #0x40  ; 0x40 = 64
    ldmia     r1, {r0 - r2}  ; ldmfd
    orr       r1, r1, r8
    mov       r3, #0
    mov       r6, #0
    mov       pc, lr
pp618
    orrs      r8, r4, r5, lsl #1
    bne       __fp_convert_NaN_2Of2  ; 1004D4A0
    eor       r8, r1, r3
    and       r8, r8, #2, 2  ; 0x80000000 = 2147483648
    tst       r11, #4
    addne     r1, pc, #0x20  ; 0x20 = 32
    addeq     r1, pc, #0x10  ; 0x10 = 16
    ldmia     r1, {r0 - r2}  ; ldmfd
    orr       r1, r1, r8
    mov       r3, #0
    mov       r6, #0
    mov       pc, lr
    DCD 0x00000000
    DCD 0x00000000
    DCD 0x00000000
    DCD 0x40007FFF
    DCD 0x00000000
    DCD 0x00000000
    IMPENTRY __fp_nonveneer_error
    mov       r12, r3
    IMPENTRY __fp_exception
    stmdb     sp!, {lr}  ; stmfd
    tst       r12, #4
    bne       pp622     ;  pc+8+28
    tst       r12, #8
    bne       pp623     ;  pc+8+28
    tst       r12, #2
    bne       pp624     ;  pc+8+36
    tst       r12, #0x10  ; 0x10 = 16
    bne       pp624     ;  pc+8+28
    bl        pp626     ;  pc+8+224
    b         pp627     ;  pc+8+24
pp622
    bl        pp628     ;  pc+8+188
    b         pp627     ;  pc+8+16
pp623
    mov       r0, #0
    mov       r1, #0
    b         pp627     ;  pc+8+4
    b         pp627     ;  pc+8+0
pp624
    bl        pp628     ;  pc+8+164
pp627
    ldmia     sp!, {lr}  ; ldmfd
    mov       pc, lr
    andne     r12, r5, r0, ror r3
    andne     r12, r5, r4, ror r3
    ldr       r12, [pc, #0xE0]  ;  pc+8+224 = 10046D58
    cmp       r12, #0
    movne     pc, r12
    DCD       0xE6000010  ; DCD Undefined Instruction
    DCD       0x80000200
    DCD       0x616F6C46
    DCD       0x676E6974
    DCD       0x696F5020
    DCD       0x4520746E
    DCD       0x70656378
    DCD       0x6E6F6974
    DCD       0x6E49203A
    DCD       0x696C6176
    DCD       0x704F2064
    DCD       0x74617265
    DCD       0x006E6F69
    DCD       0x80000201
    DCD       0x616F6C46
    DCD       0x676E6974
    DCD       0x696F5020
    DCD       0x4520746E
    DCD       0x70656378
    DCD       0x6E6F6974
    DCD       0x764F203A
    DCD       0x6C667265
    DCD       0x0000776F
    DCD       0x80000202
    DCD       0x616F6C46
    DCD       0x676E6974
    DCD       0x696F5020
    DCD       0x4520746E
    DCD       0x70656378
    DCD       0x6E6F6974
    DCD       0x6944203A
    DCD       0x65646976
    DCD       0x20794220
    DCD       0x6F72655A
    DCD       0x00000000
pp628
    and       r2, r0, #2, 2  ; 0x80000000 = 2147483648
    tst       r12, #0
    addne     r0, pc, #0x28  ; 0x28 = 40
    ldmneia   r0, {r0, r1}  ; ldmnefd
    ldreq     r0, [pc, #0x28]  ;  pc+8+40 = 10046D48
    orr       r0, r0, r2
    b         __fp_return_Inf  ; 1004D968
pp626
    and       r2, r0, #2, 2  ; 0x80000000 = 2147483648
    tst       r12, #0
    addne     r0, pc, #0x18  ; 0x18 = 24
    ldmneia   r0, {r0, r1}  ; ldmnefd
    ldreq     r0, [pc, #0x18]  ;  pc+8+24 = 10046D54
    orr       r0, r0, r2
    b         __fp_return_NaN  ; 1004D900
    DCD 0x7FF00000
    DCD 0x00000000
    DCD 0x7F800000
    DCD 0x7FF00000
    DCD 0x00000001
    DCD 0x7F800001
    DCD 0x00000000  ;
    IMPENTRY __flt_normalise2
    mov       r0, r0, lsl #8
    mov       r1, r1, lsl #8
    tst       r2, #0xFF, 16  ; 0xFF0000 = 16711680
    bne       pp633     ;  pc+8+64
    cmp       r0, #1, 16  ; 0x10000 = 65536
    subcc     r2, r2, #1, 12  ; 0x100000 = 1048576
    movcc     r0, r0, lsl #16
    tst       r0, #0xFF, 8  ; 0xFF000000 = 4278190080
    subeq     r2, r2, #2, 14  ; 0x80000 = 524288
    moveq     r0, r0, lsl #8
    tst       r0, #0xF, 4  ; 0xF0000000 = 4026531840
    subeq     r2, r2, #1, 14  ; 0x40000 = 262144
    moveq     r0, r0, lsl #4
    tst       r0, #3, 2  ; 0xC0000000 = 3221225472
    subeq     r2, r2, #2, 16  ; 0x20000 = 131072
    moveqs    r0, r0, lsl #2
    movpl     r0, r0, lsl #1
    addmi     r2, r2, #1, 16  ; 0x10000 = 65536
    tst       r3, #0xFF, 16  ; 0xFF0000 = 16711680
    orrne     r1, r1, #2, 2  ; 0x80000000 = 2147483648
    movne     pc, r12
pp633
    orr       r0, r0, #2, 2  ; 0x80000000 = 2147483648
    cmp       r1, #1, 16  ; 0x10000 = 65536
    subcc     r3, r3, #1, 12  ; 0x100000 = 1048576
    movcc     r1, r1, lsl #16
    tst       r1, #0xFF, 8  ; 0xFF000000 = 4278190080
    subeq     r3, r3, #2, 14  ; 0x80000 = 524288
    moveq     r1, r1, lsl #8
    tst       r1, #0xF, 4  ; 0xF0000000 = 4026531840
    subeq     r3, r3, #1, 14  ; 0x40000 = 262144
    moveq     r1, r1, lsl #4
    tst       r1, #3, 2  ; 0xC0000000 = 3221225472
    subeq     r3, r3, #2, 16  ; 0x20000 = 131072
    moveqs    r1, r1, lsl #2
    movpl     r1, r1, lsl #1
    addmi     r3, r3, #1, 16  ; 0x10000 = 65536
    mov       pc, r12
    IMPENTRY __fp_mult_common
    bic       r8, r1, #3, 2  ; 0xC0000000 = 3221225472
    bic       r9, r3, #3, 2  ; 0xC0000000 = 3221225472
    eor       r1, r1, r3
    and       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    add       r3, r8, r9
    sub       r3, r3, #0x3F, 24  ; 0x3F00 = 16128
    sub       r3, r3, #0xFE  ; 0xFE = 254
pp640
    teq       r2, #0
    beq       pp634     ;  pc+8+380
    teq       r4, #0
    beq       pp635     ;  pc+8+252
    stmdb     sp!, {r1, r7, r11, lr}  ; stmfd
    mov       r1, r0, lsr #16
    bic       r7, r0, r1, lsl #16
    mov       r6, r5, lsr #16
    bic       r8, r5, r6, lsl #16
    mul       r9, r1, r6
    mul       r6, r7, r6
    mul       r7, r8, r7
    adds      r7, r7, r6, lsl #16
    adc       r9, r9, r6, lsr #16
    mul       r8, r1, r8
    adds      r7, r7, r8, lsl #16
    adc       r1, r9, r8, lsr #16
    mov       r11, r2, lsr #16
    bic       lr, r2, r11, lsl #16
    mov       r6, r4, lsr #16
    bic       r8, r4, r6, lsl #16
    mul       r9, r11, r6
    mul       r6, lr, r6
    mul       lr, r8, lr
    adds      lr, lr, r6, lsl #16
    adc       r9, r9, r6, lsr #16
    mul       r8, r11, r8
    adds      lr, lr, r8, lsl #16
    adc       r11, r9, r8, lsr #16
    adds      r7, r7, r11
    adc       r1, r1, #0
    adds      r11, r7, lr
    adcs      r7, r7, r1
    adc       r1, r1, #0
    subs      r8, r0, r2
    mov       r0, #0
    mov       r6, #0
    mvncc     r0, r0
    subcc     r6, r5, r4
    subnes    r9, r4, r5
    moveq     r0, #0
    mvncc     r0, r0
    subcc     r6, r6, r8
    mov       r5, r8, lsr #16
    bic       r4, r8, r5, lsl #16
    mov       r8, r9, lsr #16
    bic       r9, r9, r8, lsl #16
    mla       r2, r5, r8, r6
    mul       r8, r4, r8
    mul       r6, r9, r4
    adds      r6, r6, r8, lsl #16
    adc       r2, r2, r8, lsr #16
    mul       r9, r5, r9
    adds      r6, r6, r9, lsl #16
    adc       r2, r2, r9, lsr #16
    adds      r6, r11, r6
    adcs      r2, r7, r2
    adcs      r0, r1, r0
    orr       lr, lr, lr, lsl #2
    orr       r6, r6, lr, lsr #2
    ldmmiia   sp!, {r1, r7, r11, lr}  ; ldmmifd
    movmi     pc, lr
    adds      r6, r6, r6
    adcs      r2, r2, r2
    adc       r0, r0, r0
    sub       r3, r3, #1
    ldmia     sp!, {r1, r7, r11, lr}  ; ldmfd
    mov       pc, lr
pp635
    mov       r4, r5, lsr #16
    bic       r6, r5, r4, lsl #16
    mov       r8, r0, lsr #16
    bic       r9, r0, r8, lsl #16
    mul       r5, r4, r8
    mul       r8, r6, r8
    mul       r0, r9, r6
    adds      r0, r0, r8, lsl #16
    adc       r5, r5, r8, lsr #16
    mul       r9, r4, r9
    adds      r0, r0, r9, lsl #16
    adc       r5, r5, r9, lsr #16
    mov       r8, r2, lsr #16
    bic       r9, r2, r8, lsl #16
    mul       r2, r4, r8
    mul       r8, r6, r8
    mul       r6, r9, r6
    adds      r6, r6, r8, lsl #16
    adc       r2, r2, r8, lsr #16
    mul       r9, r4, r9
    adds      r6, r6, r9, lsl #16
    adc       r4, r2, r9, lsr #16
    adds      r2, r4, r0
    adcs      r0, r5, #0
    movmi     pc, lr
    adds      r6, r6, r6
    adcs      r2, r2, r2
    adc       r0, r0, r0
    sub       r3, r3, #1
    mov       pc, lr
pp634
    teq       r4, #0
    beq       pp636     ;  pc+8+144
    mov       r2, r0, lsr #16
    bic       r6, r0, r2, lsl #16
    mov       r8, r5, lsr #16
    bic       r9, r5, r8, lsl #16
    mul       r0, r2, r8
    mul       r8, r6, r8
    mul       r5, r9, r6
    adds      r5, r5, r8, lsl #16
    adc       r0, r0, r8, lsr #16
    mul       r9, r2, r9
    adds      r5, r5, r9, lsl #16
    adc       r0, r0, r9, lsr #16
    mov       r8, r4, lsr #16
    bic       r9, r4, r8, lsl #16
    mul       r4, r2, r8
    mul       r8, r6, r8
    mul       r6, r9, r6
    adds      r6, r6, r8, lsl #16
    adc       r4, r4, r8, lsr #16
    mul       r9, r2, r9
    adds      r6, r6, r9, lsl #16
    adc       r2, r4, r9, lsr #16
    adds      r2, r2, r5
    adcs      r0, r0, #0
    movmi     pc, lr
    adds      r6, r6, r6
    adcs      r2, r2, r2
    adc       r0, r0, r0
    sub       r3, r3, #1
    mov       pc, lr
    IMPENTRY __fp_mult_fast_common
    bic       r8, r1, #3, 2  ; 0xC0000000 = 3221225472
    bic       r9, r3, #3, 2  ; 0xC0000000 = 3221225472
    eor       r1, r1, r3
    and       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    add       r3, r8, r9
    sub       r3, r3, #0x3F, 24  ; 0x3F00 = 16128
    sub       r3, r3, #0xFE  ; 0xFE = 254
pp636
    mov       r4, r5, lsr #16
    bic       r6, r5, r4, lsl #16
    mov       r8, r0, lsr #16
    bic       r9, r0, r8, lsl #16
    mul       r0, r4, r8
    mul       r8, r6, r8
    mul       r2, r9, r6
    adds      r2, r2, r8, lsl #16
    adc       r0, r0, r8, lsr #16
    mul       r9, r4, r9
    adds      r2, r2, r9, lsl #16
    adcs      r0, r0, r9, lsr #16
    mov       r6, #0
    movmi     pc, lr
    adds      r2, r2, r2
    adc       r0, r0, r0
    sub       r3, r3, #1
    mov       pc, lr
    IMPENTRY __fp_mult_uncommon
    mov       r9, r3, lsl #17
    cmn       r9, #2, 16  ; 0x20000 = 131072
    andcc     r9, r9, r5
    ands      r9, r9, r3, lsl #1
    mov       r8, r1, lsl #17
    cmn       r8, #2, 16  ; 0x20000 = 131072
    andcc     r8, r8, r0
    ands      r8, r8, r1, lsl #1
    bmi       pp637     ;  pc+8+124
    tst       r9, #2, 2  ; 0x80000000 = 2147483648
    bne       pp638     ;  pc+8+188
    orrs      r8, r0, r2
    orrnes    r8, r5, r4
    beq       pp639     ;  pc+8+76
    ands      r6, r0, r1, lsl #1
    bicmi     r0, r0, #2, 2  ; 0x80000000 = 2147483648
    addmi     r1, r1, #1
    ands      r6, r5, r3, lsl #1
    bicmi     r5, r5, #2, 2  ; 0x80000000 = 2147483648
    addmi     r3, r3, #1
    bic       r8, r1, #3, 2  ; 0xC0000000 = 3221225472
    bic       r9, r3, #3, 2  ; 0xC0000000 = 3221225472
    eor       r1, r1, r3
    and       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    add       r3, r8, r9
    sub       r3, r3, #0x3F, 24  ; 0x3F00 = 16128
    sub       r3, r3, #0xFE  ; 0xFE = 254
    stmdb     sp!, {lr}  ; stmfd
    tst       r0, #2, 2  ; 0x80000000 = 2147483648
    bleq      __fp_normalise_op1  ; 1004D748
    tst       r5, #2, 2  ; 0x80000000 = 2147483648
    bleq      __fp_normalise_op2  ; 1004D7AC
    ldmia     sp!, {lr}  ; ldmfd
    b         pp640     ;  pc+8-760
pp639
    eor       r1, r1, r3
    and       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    mov       r0, #0
    mov       r2, #0
    mov       r3, #0
    mov       r6, #0
    mov       pc, lr
pp637
    tst       r9, #2, 2  ; 0x80000000 = 2147483648
    beq       pp641     ;  pc+8+36
    orr       r8, r2, r0, lsl #1
    orr       r8, r8, r4
    orrs      r8, r8, r5, lsl #1
    bne       __fp_convert_NaNs  ; 1004D480
pp642
    eor       r8, r1, r3
    and       r8, r8, #2, 2  ; 0x80000000 = 2147483648
    add       r1, pc, #0x44  ; 0x44 = 68
    ldmia     r1, {r0 - r2}  ; ldmfd
    orr       r1, r1, r8
    mov       pc, lr
pp641
    orrs      r8, r2, r0, lsl #1
    bne       __fp_convert_NaN_1Of2  ; 1004D4C4
    orrs      r8, r5, r4
    bne       pp642     ;  pc+8-44
    orr       r1, r1, #1
    mov       pc, lr
pp638
    orrs      r8, r4, r5, lsl #1
    bne       __fp_convert_NaN_2Of2  ; 1004D4A0
    orrs      r8, r0, r2
    bne       pp642     ;  pc+8-68
    orr       r1, r1, #1
    mov       pc, lr
    DCD 0x00000000
    DCD 0x00000000
    DCD 0x00000000
    DCD 0x40007FFF
    DCD 0x00000000
    DCD 0x00000000
    IF 0
    IMPENTRY __rt_div0
    stmdb     sp!, {r11, lr}  ; stmfd
    mov       r0, #3, 2  ; 0xC0000000 = 3221225472
    ldr       r11, [pc, #0x20]  ;  pc+8+32 = 100471C4
    mov       r3, #0
    mov       r2, #0
    mov       r1, #0
    orr       r0, r0, #0x94  ; 0x94 = 148
    mov       lr, pc
    mov       pc, r11
    mvn       r0, #0
    ldmia     sp!, {r11, lr}  ; ldmfd
    mov       pc, lr
    DCD       __fp_error ; 0xF000FE38  ; syscall may cause error
    ENDIF
    ;--------------------------------------------------------------
    ;--------------------------------------------------------------
    ;--------------------------------------------------------------
    IMPENTRY __fp_convert_NaNs
    orrs      r8, r2, r0, lsl #1
    beq       __fp_convert_NaN_2Of2  ; 1004D4A0
    tst       r0, #1, 2  ; 0x40000000 = 1073741824
    beq       __fp_convert_NaN_1Of2  ; 1004D4C4
    orrs      r8, r4, r5, lsl #1
    beq       __fp_convert_NaN_1Of2  ; 1004D4C4
    tst       r5, #1, 2  ; 0x40000000 = 1073741824
    bne       __fp_convert_NaN_1Of2  ; 1004D4C4
    IMPENTRY __fp_convert_NaN_2Of2
    tst       r5, #1, 2  ; 0x40000000 = 1073741824
    beq       pp644     ;  pc+8+160
    mov       r1, r3
    mov       r0, r5
    mov       r2, r4
    b         pp645     ;  pc+8+16
    IMPENTRY __fp_convert_NaN1
    tst       r0, #1, 2  ; 0x40000000 = 1073741824
    beq       pp644     ;  pc+8+136
    b         pp645     ;  pc+8+4
    IMPENTRY __fp_convert_NaN_1Of2
    tst       r0, #1, 2  ; 0x40000000 = 1073741824
    beq       pp644     ;  pc+8+124
pp645
    tst       r11, #1
    bne       pp649     ;  pc+8+88
    tst       r11, #2
    bne       pp650     ;  pc+8+48
    tst       r11, #2, 24  ; 0x200 = 512
    bne       pp651     ;  pc+8+20
    bic       r8, r1, #3, 2  ; 0xC0000000 = 3221225472
    mov       r9, #0xFF  ; 0xFF = 255
    orr       r9, r9, #0x43, 24  ; 0x4300 = 17152
    cmp       r8, r9
    biccc     r2, r2, #1
    orreq     r2, r2, #1
pp651
    and       r1, r1, #3, 2  ; 0xC0000000 = 3221225472
    orr       r1, r1, #0xFF  ; 0xFF = 255
    orr       r1, r1, #0x7F, 24  ; 0x7F00 = 32512
    teq       r1, r1
    mov       pc, lr
pp650
    and       r1, r1, #3, 2  ; 0xC0000000 = 3221225472
    orr       r1, r1, #0xFF  ; 0xFF = 255
    orr       r1, r1, #0x43, 24  ; 0x4300 = 17152
    mov       r2, r2, lsr #11
    mov       r2, r2, lsl #11
    orr       r0, r0, #2, 2  ; 0x80000000 = 2147483648
    teq       r1, r1
    mov       pc, lr
pp649
    and       r1, r1, #3, 2  ; 0xC0000000 = 3221225472
    orr       r1, r1, #0x7F  ; 0x7F = 127
    orr       r1, r1, #1, 18  ; 0x4000 = 16384
    mov       r2, #0
    bic       r0, r0, #0xFF  ; 0xFF = 255
    orr       r0, r0, #2, 2  ; 0x80000000 = 2147483648
    mov       pc, lr
pp644
    orr       r1, r1, #1
    mov       pc, lr
    IMPENTRY __fp_norm_denorm_op1
    and       r1, r1, #2, 2  ; 0x80000000 = 2147483648
    teq       r0, #0
    beq       pp652     ;  pc+8+92
    mov       r8, #0
    movs      r9, r0, lsr #16
    moveq     r0, r0, lsl #16
    addeq     r8, r8, #0x10  ; 0x10 = 16
    movs      r9, r0, lsr #24
    moveq     r0, r0, lsl #8
    addeq     r8, r8, #8
    movs      r9, r0, lsr #28
    moveq     r0, r0, lsl #4
    addeq     r8, r8, #4
    movs      r9, r0, lsr #30
    moveq     r0, r0, lsl #2
    addeq     r8, r8, #2
    movs      r9, r0, lsr #31
    moveq     r0, r0, lsl #1
    addeq     r8, r8, #1
    subs      r9, r8, r6, lsr #17
    movhi     r0, r0, lsr r9
    movhi     r8, r6, lsr #17
    rsb       r6, r8, #0x20  ; 0x20 = 32
    orr       r0, r0, r2, lsr r6
    mov       r2, r2, lsl r8
    subcc     r1, r1, r9
    mov       pc, lr
pp652
    cmp       r6, #1, 10  ; 0x400000 = 4194304
    bcc       pp653     ;  pc+8+88
    movs      r0, r2
    moveq     pc, lr
    mov       r2, #0
    mov       r8, #0x20  ; 0x20 = 32
    movs      r9, r0, lsr #16
    moveq     r0, r0, lsl #16
    addeq     r8, r8, #0x10  ; 0x10 = 16
    movs      r9, r0, lsr #24
    moveq     r0, r0, lsl #8
    addeq     r8, r8, #8
    movs      r9, r0, lsr #28
    moveq     r0, r0, lsl #4
    addeq     r8, r8, #4
    movs      r9, r0, lsr #30
    moveq     r0, r0, lsl #2
    addeq     r8, r8, #2
    movs      r9, r0, lsr #31
    moveq     r0, r0, lsl #1
    addeq     r8, r8, #1
    subs      r9, r8, r6, lsr #17
    movhi     r0, r0, lsr r9
    subcc     r1, r1, r9
    mov       pc, lr
pp653
    mov       r8, r6, lsr #17
    rsb       r9, r8, #0x20  ; 0x20 = 32
    mov       r0, r0, lsl r8
    orr       r0, r0, r2, lsr r9
    mov       r2, r2, lsl r8
    mov       pc, lr
    IMPENTRY __fp_norm_denorm_op2
    and       r3, r3, #2, 2  ; 0x80000000 = 2147483648
    teq       r5, #0
    beq       pp654     ;  pc+8+92
    mov       r8, #0
    movs      r9, r5, lsr #16
    moveq     r5, r5, lsl #16
    addeq     r8, r8, #0x10  ; 0x10 = 16
    movs      r9, r5, lsr #24
    moveq     r5, r5, lsl #8
    addeq     r8, r8, #8
    movs      r9, r5, lsr #28
    moveq     r5, r5, lsl #4
    addeq     r8, r8, #4
    movs      r9, r5, lsr #30
    moveq     r5, r5, lsl #2
    addeq     r8, r8, #2
    movs      r9, r5, lsr #31
    moveq     r5, r5, lsl #1
    addeq     r8, r8, #1
    subs      r9, r8, r6, lsr #17
    movhi     r5, r5, lsr r9
    movhi     r8, r6, lsr #17
    rsb       r6, r8, #0x20  ; 0x20 = 32
    orr       r5, r5, r4, lsr r6
    mov       r4, r4, lsl r8
    subcc     r3, r3, r9
    mov       pc, lr
pp654
    cmp       r6, #1, 10  ; 0x400000 = 4194304
    bcc       pp655     ;  pc+8+88
    movs      r5, r4
    moveq     pc, lr
    mov       r4, #0
    mov       r8, #0x20  ; 0x20 = 32
    movs      r9, r5, lsr #16
    moveq     r5, r5, lsl #16
    addeq     r8, r8, #0x10  ; 0x10 = 16
    movs      r9, r5, lsr #24
    moveq     r5, r5, lsl #8
    addeq     r8, r8, #8
    movs      r9, r5, lsr #28
    moveq     r5, r5, lsl #4
    addeq     r8, r8, #4
    movs      r9, r5, lsr #30
    moveq     r5, r5, lsl #2
    addeq     r8, r8, #2
    movs      r9, r5, lsr #31
    moveq     r5, r5, lsl #1
    addeq     r8, r8, #1
    subs      r9, r8, r6, lsr #17
    movhi     r5, r5, lsr r9
    subcc     r3, r3, r9
    mov       pc, lr
pp655
    mov       r8, r6, lsr #17
    rsb       r9, r8, #0x20  ; 0x20 = 32
    mov       r5, r5, lsl r8
    orr       r5, r5, r4, lsr r9
    mov       r4, r4, lsl r8
    mov       pc, lr
    mov       r2, #0
    ands      r1, r6, #2, 2  ; 0x80000000 = 2147483648
    rsbne     r0, r6, #0
    moveqs    r0, r6
    moveq     r3, #0
    moveq     pc, lr
    mov       r3, #1, 18  ; 0x4000 = 16384
    orr       r3, r3, #0x1E  ; 0x1E = 30
    mov       r6, #0
    IMPENTRY __fp_normalise_op1
    teq       r0, #0
    moveq     r0, r2
    moveq     r2, #0
    subeq     r3, r3, #0x20  ; 0x20 = 32
    mov       r8, #0
    movs      r9, r0, lsr #16
    moveq     r0, r0, lsl #16
    addeq     r8, r8, #0x10  ; 0x10 = 16
    movs      r9, r0, lsr #24
    moveq     r0, r0, lsl #8
    addeq     r8, r8, #8
    movs      r9, r0, lsr #28
    moveq     r0, r0, lsl #4
    addeq     r8, r8, #4
    movs      r9, r0, lsr #30
    moveq     r0, r0, lsl #2
    addeq     r8, r8, #2
    movs      r9, r0, lsr #31
    moveq     r0, r0, lsl #1
    addeq     r8, r8, #1
    rsbs      r9, r8, #0x20  ; 0x20 = 32
    orr       r0, r0, r2, lsr r9
    mov       r2, r2, lsl r8
    sub       r3, r3, r8
    mov       pc, lr
    IMPENTRY __fp_normalise_op2
    teq       r5, #0
    moveq     r5, r4
    moveq     r4, #0
    subeq     r3, r3, #0x20  ; 0x20 = 32
    mov       r8, #0
    movs      r9, r5, lsr #16
    moveq     r5, r5, lsl #16
    addeq     r8, r8, #0x10  ; 0x10 = 16
    movs      r9, r5, lsr #24
    moveq     r5, r5, lsl #8
    addeq     r8, r8, #8
    movs      r9, r5, lsr #28
    moveq     r5, r5, lsl #4
    addeq     r8, r8, #4
    movs      r9, r5, lsr #30
    moveq     r5, r5, lsl #2
    addeq     r8, r8, #2
    movs      r9, r5, lsr #31
    moveq     r5, r5, lsl #1
    addeq     r8, r8, #1
    rsbs      r9, r8, #0x20  ; 0x20 = 32
    orr       r5, r5, r4, lsr r9
    mov       r4, r4, lsl r8
    sub       r3, r3, r8
    mov       pc, lr
    IMPENTRY __fp_normalise_op1neg
    teq       r0, #0
    moveq     r0, r2
    moveq     r2, #0
    addeq     r3, r3, #0x20  ; 0x20 = 32
    mov       r8, #0
    movs      r9, r0, lsr #16
    moveq     r0, r0, lsl #16
    addeq     r8, r8, #0x10  ; 0x10 = 16
    movs      r9, r0, lsr #24
    moveq     r0, r0, lsl #8
    addeq     r8, r8, #8
    movs      r9, r0, lsr #28
    moveq     r0, r0, lsl #4
    addeq     r8, r8, #4
    movs      r9, r0, lsr #30
    moveq     r0, r0, lsl #2
    addeq     r8, r8, #2
    movs      r9, r0, lsr #31
    moveq     r0, r0, lsl #1
    addeq     r8, r8, #1
    rsbs      r9, r8, #0x20  ; 0x20 = 32
    orr       r0, r0, r2, lsr r9
    mov       r2, r2, lsl r8
    add       r3, r3, r8
    mov       pc, lr
    DCD 0x00000000
    DCD 0x00000000
    DCD 0x00000000
    DCD 0x40007FFF
    DCD 0x00000000
    DCD 0x00000000
    IMPENTRY __fp_fcheck_NaN2
    mov       r3, #1, 8  ; 0x1000000 = 16777216
    cmn       r3, r0, lsl #1
    bls       pp656     ;  pc+8+12
    tst       r0, #1, 10  ; 0x400000 = 4194304
    beq       __fp_exception  ; 10046C18
    cmn       r3, r1, lsl #1
    bls       __fp_return_NaN  ; 1004D900
pp656
    mov       r0, r1
    tst       r0, #1, 10  ; 0x400000 = 4194304
    bne       __fp_return_NaN  ; 1004D900
    b         __fp_exception  ; 10046C18
    IMPENTRY __fp_dcheck_NaN2
    stmdb     sp!, {r12}  ; stmfd
    mov       r12, #2, 12  ; 0x200000 = 2097152
    cmn       r12, r1, lsl #1
    cmpeq     r0, #0
    bls       pp657     ;  pc+8+24
    tst       r1, #2, 14  ; 0x80000 = 524288
    ldmeqia   sp!, {r12}  ; ldmeqfd
    beq       __fp_exception  ; 10046C18
    cmn       r12, r3, lsl #1
    cmpeq     r2, #0
    ldmlsia   sp!, {r12}  ; ldmlsfd
    bls       __fp_return_NaN  ; 1004D900
pp657
    ldmia     sp!, {r12}  ; ldmfd
    mov       r1, r3
    mov       r0, r2
    tst       r1, #2, 14  ; 0x80000 = 524288
    bne       __fp_return_NaN  ; 1004D900
    b         __fp_exception  ; 10046C18
    IMPENTRY __fp_return_NaN
    mov       pc, lr
    mov       r0, #1
    cmp       r0, #0
    mov       pc, lr
    mov       r0, #0
    cmp       r0, #1
    mov       pc, lr
    movs      r0, #1
    mov       pc, lr
    mov       r0, #1
    mov       pc, lr
    mov       r0, #0
    mov       r1, #0
    mov       pc, lr
    mov       r2, r0
    tst       r12, #0
    mvneq     r0, #2, 2  ; 0x80000000 = 2147483648
    mvnne     r0, #0
    mvnne     r1, #2, 2  ; 0x80000000 = 2147483648
    tst       r2, #2, 2  ; 0x80000000 = 2147483648
    mvnne     r0, r0
    mvnne     r1, r1
    mov       pc, lr
    mvn       r0, #0
    mvn       r1, #0
    mov       pc, lr
    IMPENTRY __fp_return_Inf
    mov       pc, lr
;------------------------------------------------------
;------------------------------------------------------
;===================================================================
HwStatus             EQU    0x00000140
HwUartData           EQU    0x00000480
HwBaseAddress       EQU     0x80000000
HwStatusUartTxFifoFull        EQU    0x00800000
HwStatusUartRxFifoEmpty       EQU    0x00400000
debugflag       EQU 'x'
;------------------------------------------------------
;debugx: send out a word
;input  r0=
    EXPORT  debugx
debugx
; Send debug signal
    swp lr,lr,[sp]
;    stmdb   sp!,{lr}
    stmdb   sp!, {r0,r1,r2,r3,r4,r12}
    mrs r12,cpsr
    stmdb sp!,{r12}
    mov r0,lr
    ldr r12,=HwBaseAddress
    mov     r3,r0
    ldr     r0,=debugflag
    bl      WriteByte

    mov r1,#28
    adr r4,AsciiTbl

1   mov r0,r3,lsr r1
    and r0,r0,#0x0f
    ldr r0,[r4,r0]
    bl WriteByte
    subs r1,r1,#4
    bge %b1

    ldmia sp!,{r12}
    msr cpsr,r12
    ldmia     sp!, {r0,r1,r2,r3,r4,r12}
    ldmia   sp!, {pc}

AsciiTbl    DCD 0x33323130
            DCD 0x37363534
            DCD 0x62613938
            DCD 0x66656463
;===================================================================

; write a byte to uart
;input  r0
;output
WriteByte
1   ldr     r2, [r12,#HwStatus]
    tst     r2, #HwStatusUartTxFifoFull
    bne     %b1
    and r0,r0,#0xff
    str     r0, [r12, #HwUartData]
    mov     pc, lr
;===================================================================
;------------------------------------------------------
    END